[英]Query SQL Microsoft Access bug?
我一直在使用SQL访问数据库。 我正在尝试执行以下查询:
SELECT Produtos.produto,
[aux].[total]/[Produtos].[existencias] AS [peso consumos nas existencias]
FROM (SELECT Produtos.produto, SUM(Consumos.quantidade) AS total
FROM Consumos, Produtos, Fornecedores
WHERE Consumos.codproduto=Produtos.produto
AND Produtos.codfornecedor=9
GROUP BY Produtos.produto
ORDER BY Produtos.produto) AS aux
INNER JOIN Produtos
ON aux.produto = Produtos.produto
WHERE (((aux.produto)=[Produtos].[produto]));
仔细查看结果,我发现[peso consumos nas existencias]列乘以10。尝试解决此问题后,我注意到我没有使用Fornecedores表,尽管我在FROM关键字后调用它,所以我将其删除了。它:
SELECT Produtos.produto,
[aux].[total]/[Produtos].[existencias] AS [peso consumos nas existencias]
FROM (SELECT Produtos.produto, SUM(Consumos.quantidade) AS total
FROM Consumos, Produtos
WHERE Consumos.codproduto=Produtos.produto
AND Produtos.codfornecedor=9
GROUP BY Produtos.produto
ORDER BY Produtos.produto) AS aux
INNER JOIN Produtos
ON aux.produto = Produtos.produto
WHERE (((aux.produto)=[Produtos].[produto]));
运行后,结果是正确的。 这应该发生吗? 如果是这样,为什么?
谢谢!
您的Fornecedores
表可能有10条记录。
FROM Consumos, Produtos, Fornecedores
WHERE Consumos.codproduto=Produtos.produto
正在使用Consumos-Produtos的笛卡尔积乘以这10条记录,因此SUM()使用每个数字10次。
注1:
使用显式的INNER JOIN语法被认为是更好的样式:
FROM Consumos INNER JOIN Produtos
ON Consumos.codproduto=Produtos.produto
WHERE Produtos.codfornecedor=9
而不是FROM Consumos, Produtos
笔记2:
如果您认为您在Access(或任何数据库)查询引擎中发现了错误,则几乎100%的可能性就是该错误存在于查询中。 ;-)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.