我被问到一个问题,使用adventureworks列出所有没有产品的供应商。当我运行select语句时,不会返回任何内容。我做错什么了(只能使用联接和联合进行回答(无子查询)
SELECT DISTINCT pv.Name AS 'Vendors'
FROM Purchasing.Vendor pv
INNER JOIN Purchasing.ProductVendor ppv
ON pv.BusinessEntityID = ppv.BusinessEntityID
INNER JOIN Production.Product pp
ON pp.ProductID = ppv.ProductID
WHERE pp.ProductID != ppv.ProductID;
3条答案
按热度按时间iibxawm41#
使用left join来包括没有“供应商”产品的情况。内部连接将只考虑那些情况,其中存在供应商的产品id。
现在,对“供应商”进行分组,并计算使用
COUNT()
功能。最后,使用
HAVING
条款请尝试以下操作:
ql3eal8s2#
你看的表太多了,所有的产品供应商都有产品。并非所有供应商都有产品供应商。
从那里你可以简单地使用
LEFT JOIN
查找空记录。wmvff8tz3#
退回所有没有任何产品的供应商