【发布时间】:2022-12-18 08:25:22
【问题描述】:
我有三张表,table1和table2和table3相连,但是table2和table3没有相连。我需要每个 table1 行的 table2 和 table3 的输出计数。我必须使用 joins 和 group by table1.name
SELECT Tb_Product.Name, count(TB_Offers.Prod_ID) 'Number of Offers', count(Tb_Requests.Prod_ID) 'Number of Requests'
FROM Tb_Product LEFT OUTER JOIN
Tb_Requests ON Tb_Product.Prod_ID = Tb_Requests.Prod_ID LEFT OUTER JOIN
TB_Offers ON Tb_Product.Prod_ID = TB_Offers.Prod_ID
GROUP BY Tb_Product.Name
我需要结合这些查询:
SELECT Tb_Product.[Name], count(TB_Offers.Prod_ID) 'Number of Offers'
FROM Tb_Product LEFT OUTER JOIN
TB_Offers ON Tb_Product.Prod_ID = TB_Offers.Prod_ID
GROUP BY Tb_Product.[Name]
SELECT Tb_Product.[Name], count(Tb_Requests.Prod_ID) 'Number of Requests'
FROM Tb_Product LEFT OUTER JOIN
Tb_Requests ON Tb_Product.Prod_ID = Tb_Requests.Prod_ID
GROUP BY Tb_Product.[Name]
结果:
Name Number of Offers
Airplane 6
Auto 5
Bike 3
Camera 0
Computer 12
Milk 4
Oil 4
Orange 6
Telephone 0
Truck 6
TV 4
Name Number of Requests
Airplane 1
Auto 5
Bike 0
Camera 2
Computer 6
Milk 4
Oil 5
Orange 6
Telephone 0
Truck 1
TV 5
我的报价和请求结果是相同的值。我不确定我在连接上做错了什么。我是否需要以某种方式将产品加入请求并单独将产品加入报价?这需要在一个查询中完成。
这是一个类。解释也将不胜感激。
【问题讨论】:
-
我建议使用相关子查询来计数而不是外部连接。
-
这是因为连接的工作方式。将 Product 连接到 Requests 会产生一个新关系,然后将该关系连接到 Offers 会产生最终关系。然后,您只需计算来自相同关系的两列中的值,因此计算相同的行数。
标签: sql