对于无益的头衔感到抱歉,但希望我能够解释得这么好。
假设我有三张桌子,
Item
ItemKey
ItemName
Group
GroupKey
GroupItem
GroupKey
ItemKey
给定一个ItemKey,我如何从项目表中获取属于包含项目键的组的所有记录?
所以,如果我有
Item
1 ItemA
2 ItemB
3 ItemC
Group
1
2
3
GroupItem
1 1
1 2
2 1
2 2
3 2
3 3
传入1将返回ItemA和ItemB,但不返回ItemC,因为没有包含ItemA和ItemC的组。
答案 0 :(得分:3)
select distinct ItemName
from Item I
inner join GroupItem GI
on I.ItemKey = GI.ItemKey
where GI.GroupKey in
(select GroupKey
from GroupItem
where ItemKey = @Param)
-- @Param is the input parameter. Change for you
-- DBMS
或:
select distinct ItemName
from GroupItem GI_MemberOf
inner join GroupItem GI_Map
ON GI_Map.GroupKey = GI_MemberOf.GroupKey
inner join Item I
on I.ItemKey = GI_Map.ItemKey
where GI_MemberOf.ItemKey = @Param
-- @Param is the input parameter. Change for you
-- DBMS
答案 1 :(得分:1)
您可以使用子查询。
SELECT DISTINCT i.ItemName
FROM GroupItem gi JOIN
Item i ON gi.ItemKey = i.ItemKey
WHERE gi.GroupKey IN (
SELECT DISTINCT GroupKey FROM GroupItem WHERE ItemKey = @Param
)