2010-06-25 5 views
1

저는 SQL 쿼리에 관해서는 아직 초보자입니다. 그래서 누군가가 나를 빌려 줄 수 있기를 바랬습니다.복잡한 SQL 쿼리에 대한 도움말

Skill, Set 및 Contact 테이블과 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? 

감사합니다.

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) 

답변

0

가 잘 작동하거나 적어도 최종 솔루션에 당신을지도해야한다, 당신은 단지 하나 개의 쿼리가 필요합니다
+1

는 (데이터)에 따라 유용 할 수 있습니다 DISTINCT SELECT : – devio