2016-02-27 57 views
1

我有以下表格:MYSQL連接表上多列中沒有唯一的ID

表主營:

TestNumber PassageNumber QuestionNumber 
1    1    1 
1    1    2 
1    1    3 
1    2    1 
1    2    2 
1    2    3 

表兒童:

TestNumber PassageNumber QuestionNumber User SelectedAnswer 
1    1    1     X  A 
1    2    2     X  B 

我要顯示的數據基於測試編號和用戶不在子表中的主表。所以我期待的結果如下,其中從主表中的行是那些不是在孩子:

TestNumber PassageNumber QuestionNumber 
1    1    2 
1    1    3 
1    2    1 
1    2    3 

我曾嘗試下面的查詢和變化,沒有運氣:

SELECT a.passagenumber, a.questionnumber FROM Main a left outer join 
Child b on a.testnumber=b.testnumber where b.user = 'X' 
and b.testnumber=1 and a.testnumber=1 and b.selectedanswer is not null 

我瞭解我是否有一個唯一的ID這很容易解決,但在這種情況下,這不是一個選項。任何幫助將非常感激。

回答

1

我瘦,你可以使用不

SELECT a.passagenumber, a.questionnumber FROM Main a 
where (a.testnumber, a.passagenumber, a.questionumber) 
     not in (select b.testnumber, b.passagenumber, b.questionumber 
        from Child b where b.user = 'X') 
+0

是的,非常感謝這麼多 – Maxqueue

0

,您可以加入對三個字段的表,使用LEFT JOIN和那裏的孩子表值爲空?

SELECT p.TestNumber 
     ,p.PassageNumber 
     ,p.QuestionNumber 
FROM Parent p 
     LEFT JOIN Child c ON c.TestNumber = p.TestNumber 
           AND c.PassageNumber = p.PassageNumber 
           AND c.QuestionNumber = p.QuestionNumber 
           AND c.[User] = 'X' 
WHERE c.TestNumber IS NULL;