我有一個表ProductDeliveryModes爲:獲得產品支持所有交付模式在SQL
ProductId DeliveryId
P101 D1
P101 D2
P101 D3
P102 D1
P102 D2
P102 D3
P103 D1
我需要得到支持所有交付模式(D1,D2,D3)的產品。從表中看出產品應該是:P101和P102。
,我形成得到解決的查詢是:
SELECT ProductId
FROM (SELECT DISTINCT ProductId,
DeliveryId
FROM ProductDeliveryModes) X
WHERE X.DeliveryId IN ('D1', 'D2', 'D3')
GROUP BY ProductId
HAVING COUNT(*) = 3
,我在我的解決方案中看到的問題是,一個人應該知道的交付模式總數的計數。我們可以通過從子查詢獲取計數來使計數動態化。
有沒有更好的解決方案?
「更好的解決方案」就什麼?可維護性?效率?如果後者是什麼表定義包括索引?另外還有另一張具有不同交付模式的表格嗎?您可能會發現以下文章有用。 [one](https://www.simple-talk.com/sql/t-sql-programming/divided-we-stand-the-sql-of-relational-division/)[two](http:// weblogs .sqlteam.com/peterl/archive/2010/07/02/Proper-Relational-Division-With-Sets.aspx) –