首页 > 解决方案 > 在 C# 上对 Mysql 值求和

问题描述

我有一个带有一些用户数据的 mysql 表,它有一些保存数量的产品,我想将每个产品数量相加得到产品总数量,我不能选择“我的产品名称”因为我需要得到所有产品都是自动的,它们可以随时更改,因此我正在创建一个临时表并删除客户信息列以仅从中获取产品。我用来只从我的表中获取产品的 mysql 命令:

CREATE TEMPORARY TABLE TemporaryTable 
    SELECT RoteiroDia.* 
    FROM Clientes 
        INNER JOIN RoteiroDia ON Clientes.id=RoteiroDia.idCliente 
        INNER JOIN NomeRotas ON Clientes.idRota=NomeRotas.id 
        INNER JOIN Vendedores ON RoteiroDia.idVendedor=Vendedores.id 
        INNER JOIN Veiculos ON RoteiroDia.idPlaca=Veiculos.id 
    WHERE NRotas = 'placeHere' 
    AND Vendedores.Nome = 'nameHere' 
    AND Veiculos.Placa = 'nameHere' 
    AND RoteiroDia.Data = 'dateHere'; 

    ALTER TABLE TemporaryTable 
        DROP COLUMN FormaPagamento, 
        DROP COLUMN Obs, 
        DROP COLUMN id, 
        DROP COLUMN Data, 
        DROP COLUMN idRota, 
        DROP COLUMN idCliente, 
        DROP COLUMN pos, 
        DROP COLUMN idVendedor, 
        DROP COLUMN idPlaca, 
        DROP COLUMN Debito, 
        DROP COLUMN Acerto, 
        DROP COLUMN Diferença, 
        DROP COLUMN DinheiroRecebido, 
        DROP COLUMN AVista, 
        DROP COLUMN Despesas, 
        DROP COLUMN NovaVendas, 
        DROP COLUMN Entradas; 

    SELECT * FROM TemporaryTable;

mysql代码给了我什么: 图片

要将它们全部汇总到每个“产品”中,我在这里使用这个 c# 代码: 我正在使用 rdr2.fieldcount 来获取产品数量(当前为 9),然后我循环遍历它并分配 rdr.getint (0) 到 produtoQuantidadeList[i]

produtoQuantidadeList = new List<int>(new int[rdr2.FieldCount]);
int i = 0;
while (rdr2.Read())
{
    produtoQuantidadeList[i] += rdr2.GetInt32(0);
    if (i < rdr2.FieldCount - 1)
        i++;
    else
        i = 0;
}

然后我在这里使用它来调试数量:

for(int i = 0; i < produtoQuantidadeList.Count; i++)
    Console.WriteLine($"***** {produtoQuantidadeList[i]}"); 

但是我的 c# 代码没有正确地对它们求和,显然它无法从表中获取所有值

我的表 SUM() 与第三个产品的作用: 图片

用我的代码求和: 第三个产品(数字 2)

标签: c#mysql

解决方案


该问题应如下解决:

produtoQuantidadeList = new int[rdr2.FieldCount];
while (rdr2.Read())
{
    // Loop all fields for each record
    for(int i=0; i < rdr2.FieldCount; i++)
    {
        // Sum the value of each field
        produtoQuantidadeList[i] += rdr2.GetInt32(i);
    }
}

推荐阅读