【发布时间】:2017-04-09 16:06:41
【问题描述】:
脚本 1
select supplier.suppl_no, name, count(art_no) TotalArticles
from article, supplier
where article.suppl_no = supplier.suppl_no and supplier.suppl_no = 20009
group by supplier.suppl_no, name;
结果:TotalArticles = 51
脚本 2
select supplier.suppl_no, name, count(ord_no) TotalOrders
from orders, supplier
where orders.suppl_no = supplier.suppl_no and supplier.suppl_no = 20009
group by supplier.suppl_no, name;
结果:TotalOrders = 74
现在,我想将以上两个脚本合二为一,如下所示。
脚本 3
select article.suppl_no, name, count(art_no) "TotalArticles", count(ord_no) "TotalOrders"
from article, supplier, orders
where article.suppl_no = supplier.suppl_no and supplier.suppl_no = orders.suppl_no and supplier.suppl_no = 20009
group by article.suppl_no, name
结果:TotalArticles = 3774(在第一个脚本中预期为 51)
结果:TotalOrders = 3774(第二个脚本中预期为 74)
所以,对于 TotalArticles 和 TotalOrders,它给我的结果是 51 * 74 = 3774。你能帮我弄清楚我在脚本 3 中犯了什么错误吗?非常感谢。
【问题讨论】:
-
stackoverflow.com/editing-help(标记代码并单击
{}。在需要的地方添加换行符。) -
请发布一些示例数据和期望的结果。在这里你可以找到一些有用的东西来构建一个minimal reproducible example
-
试试
count(distinct art_no)看看会发生什么。 (或保留原始查询。)