【发布时间】:2018-05-13 12:08:29
【问题描述】:
只是需要新的 sql 学习者的帮助。
我有两张桌子。产品,供应商。产品具有 Vendor_ID 作为外键。我需要显示每个供应商的 vendor_name、vendor_phone 和产品数量。 如果你能帮我简单解释一下查询,我会很高兴的。
【问题讨论】:
-
提示:
INNER JOIN和GROUP BY。你应该展示你所做的任何尝试。不然怎么学?
标签: sql
只是需要新的 sql 学习者的帮助。
我有两张桌子。产品,供应商。产品具有 Vendor_ID 作为外键。我需要显示每个供应商的 vendor_name、vendor_phone 和产品数量。 如果你能帮我简单解释一下查询,我会很高兴的。
【问题讨论】:
INNER JOIN 和 GROUP BY。你应该展示你所做的任何尝试。不然怎么学?
标签: sql
您可以使用GROUP BY 执行COUNT(*),如下所示。
SELECT V.VendorId, V.Vendor_Name AS VendorName, V.Vendor_Phone, Count(*) [Count]
FROM Vendor V INNER JOIN Product P ON P.Vendor_ID = V.Vendor_ID
GROUP BY V.VendorId, V.Vendor_Name,V.Vendor_Phone
或者使用如下子查询。
SELECT V.Vendor_Name AS VendorName, V.Vendor_Phone,
(
SELECT COUNT(*) FROM Product P WHERE P.Vendor_ID = V.Vendor_ID
) AS [Count]
FROM Vendor V
您也可以使用ROW_NUMBER() 进行操作,如下所示。
SELECT * FROM
(
SELECT V.VendorId, V.Vendor_Name AS VendorName, V.Vendor_Phone,
ROW_NUMBER() OVER(PARTITION BY V.Vendor_ID ORDER BY V.Vendor_ID) RN
Count(*) OVER(PARTITION BY V.Vendor_ID ORDER BY V.Vendor_ID) [Count]
FROM Vendor V INNER JOIN Product P ON P.Vendor_ID = V.Vendor_ID
) T
WHERE T.RN=1
【讨论】: