Reputation: 61
Just need help for new sql learner.
I have two tables. PRODUCT, VENDOR. Product has Vendor_ID as an foreign key. I need to show vendor_name, vendor_phone and number of products from each vendor. I would be greatfull if you help me with simple explanation of query.
Upvotes: 0
Views: 44
Reputation: 17943
You can do COUNT(*)
using GROUP BY
like following.
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
Or using sub query like following.
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
You can also do it using ROW_NUMBER()
, like following.
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
Upvotes: 1