在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代码给我的:图片

为了将它们全部加到每个"Product"中,我使用了下面的c#代码:我正在使用rdr2。fieldcount获取产品数量(目前为9),然后我循环它并将rdr.getint(0)分配给productoquantidadelist [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)

问题应该像下面这样修复:

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);
}
}

这有点太复杂了。您是否知道可以通过简单地而不提及来从结果集中删除列?如果Person表有Name和Age列,而您想要一个包含所有Name的列表,则不需要从Person创建一个临时表,然后删除Age列。你只是不选择它:

SELECT Name FROM Person --no age column mentioned

现在对按列0分组的所有列9求和:

SELECT Columns,You,Want,From,Roteiro, 
SUM(column9NameHere) OVER(PARTITION BY galões) total_by_galoes
FROM
...

当然,你的截图只到第8列,所以我不知道你的第9列叫什么。替换

中的名称

最新更新