1
我有有下列的表項目:如何正確連接表可能返回多行
項目Id || AdminUserID || ITEMNAME
我嘗試用ItemAttributes中加入吧:
ItemAttributeId || ItemId || AttributeValue
其中一個ItemId可以有多個分配給它的ItemAttributeId值。
我創建的過程,從兩個表中檢索項值:
SELECT
i.ItemID,
i.AdminUserID,
i.ItemName,
attr1.AttributeValue as IsForEmailRobotProcessingValue,
attr2.AttributeValue as RobotScheduledHoursValue -- HERE IS THE PROBLEM
FROM [dbo].[Items] i WITH (NOLOCK)
LEFT JOIN [dbo].ItemAttributes attr1 WITH(NOLOCK)
ON attr1.ItemID = i.ItemID and attr1.ItemAttributeID = 1
LEFT JOIN [dbo].ItemAttributes attr2 WITH(NOLOCK)
ON attr2.ItemID = i.ItemID and attr2.ItemAttributeID = 2
WHERE ((attr1.AttributeValue IS NOT NULL AND attr1.AttributeValue = 'true') OR
@OnlyForEmailRobotProcessing = 0)
ORDER BY ItemName
我不喜歡這裏,我左連接在同一個表兩次,會爲每個不同的別名,聯接根據相同項目Id。有沒有更好的方法來只加入一次,併爲每個ItemAttributeId創建兩個不同的別名?謝謝!
謝謝您的回答。你認爲這比我的版本更有效嗎? – 2014-12-04 11:43:36
您必須檢查執行計劃才能測量性能。 – Milen 2014-12-04 11:45:56