在SQL查询方面,我仍然是新手,所以我希望有人可以伸出援助之手。
假设我有3个表,技能,设置和联系人,以及2个链接表,SkillSet和ContactSet。 (这3个表有一个“ID”列,用作主键)
联系人可以有任意数量的集合,反之亦然(多对多)
集合可以具有任意数量的技能,反之亦然(也是多对多)
我想要的是,当提供技能ID时,将每个联系人返回到包含该技能的集合。
还在我身边吗?
这是我到目前为止所得到的:
SELECT Set.ID as expr1
FROM SkillSet
WHERE Skill.ID = @SkillID
//this selects every set containing the Skill.
SELECT Contact.ID
FROM ContactSet
WHERE SET.ID = ?
//this is where I run into problems. I want to use the records returned from
//the previous SELECT query (expr1) but I'm unsure how.
//Would it be expr1.ID or expr1.Set.ID?
谢谢。
答案 0 :(得分:0)
这应该可以正常工作或至少引导您到最终解决方案,您只需要一个查询:
declare @skillid int
set @skillid = 1
SELECT C.*
FROM contact c
inner join SetContact SC on (sc.contactId = C.contactId)
inner join SkillSet SS on (ss.SetId = SC.SetId)
WHERE (SS.SkillId = @SkillId)