0

我有 2 个表:Products 和 ChildProducts。

我需要选择给定 CategoryID 的所有产品以及不具有相同 CategoryID 的相关 ChildProducts

Products:
ItemID  CategoryID   Name
A          1         Test1
B          1         Test2
C          2         Test3
A1        0         Test4
A2        0         Test5
A3        0         Test6
B1        0         Test7
B2        0         Test8
C1        0         Test9
C2        0         Test10
C3        0         Test11
C4        0         Test12

Child Products:
ParentItemID    ChildItemID
A                     A1
A                     A2
A                     A3
B                     B1
B                     B2
C                     C1
C                     C2
C                     C3
C                     C4

因此需要 parentItemID 属于给定类别的所有产品,IE CategoryID=1 将返回:

Results:
A         Test1
A1         Test4
A2         Test5
A3         Test6
B         Test2
B1         Test7
B2         Test8
4

1 回答 1

1

SQLFiddle 演示

select p1.ItemID

from Products p1
LEFT JOIN ChildProducts cp on p1.ItemId=cp.ChildItemID
LEFT JOIN Products p2 on cp.ParentItemID=p2.ItemId


  where p1.CategoryId=1
        or 
        p2.CategoryId=1
ORDER BY COALESCE(p2.ItemID,p1.ItemID),p2.ItemId
于 2013-11-01T12:23:39.130 回答