2012-08-13 111 views
0

我正在加入3個表。多個INNER JOIN返回null

table1. 
grp_id | email_id 
    1 | 3 
    1 | 58 

table2. 
sam_msg_id | sam_subject 
    3  | Funnel 

table3. 
id | subject 
58 | testing check 


Desired Output: 

id |grp_id|email_id|sam_subject|subject  | 
184|1  |3  |funnel  |    | 
185|1  |58  |   |testing check| 

我試着查詢:

SELECT table1.*, table2.sam_subject, table3.* 
FROM table1 
INNER JOIN table2 
    ON table2.sam_msg_id = table1.email_id 
INNER JOIN table3 
    ON table3.id = table1.email_id 
WHERE table1.grp_id = '1' 

我想在這裏做的是讓其中ID是在表1下EMAIL_ID找到的對象列表,並從表2和表3的ID 。

當我試圖做一個內部聯接只通過檢查只是從table2的數據它工作。

我不熟悉使用內部連接,因此我不能真正看到我做錯了什麼。

我正在使用MySQL。

+1

實際上table3中是否有匹配的相關行?如果沒有,這應該是table1和table3之間的'LEFT JOIN' – 2012-08-13 21:27:36

+0

您可能希望將'INNER JOIN'更改爲'LEFT JOIN' – alfasin 2012-08-13 21:29:09

+0

您可能想要使用'LEFT JOIN' – Kalpesh 2012-08-13 21:30:27

回答

3

聽起來像是你需要一個LEFT JOIN

SELECT table1.*, table2.sam_subject, table3.* 
FROM table1 
LEFT JOIN table2 
    ON table2.sam_msg_id = table1.email_id 
LEFT JOIN table3 
    ON table3.id = table1.email_id 
WHERE table1.grp_id = '1' 

基於編輯,下面應該給你你想要的結果:

SELECT t1.grp_id, 
    t1.email_id, 
    coalesce(t2.sam_subject, '') sam_subject, 
    coalesce(t3.subject, '') subject 
FROM t1 
left JOIN t2 
    ON t2.sam_msg_id = t1.email_id 
left JOIN t3 
    ON t1.email_id = t3.id 
WHERE t1.grp_id = '1' 

SQL Fiddle with Demo

+0

我編輯我的代碼給每個表中發現的數據 – magicianiam 2012-08-13 21:52:03

+0

@magicianIam看到我的編輯 – Taryn 2012-08-13 22:22:21

+0

謝謝你這個伴侶。你可以做一些總結,看看它是如何工作的。謝謝。 :) – magicianiam 2012-08-14 15:08:41

1

我有點對你在問什麼感到困惑。如果您可以提供您當前的數據和您想要的輸出的例子,我們可以確定一個解決方案。

事實上,我懷疑你需要閱讀LEFT JOIN,如果你的子表中沒有匹配的記錄,將返回NULL。如果不匹配,則INNER JOIN不會返回記錄。

看看這篇文章對不同類型的連接的說明:

http://www.codinghorror.com/blog/2007/10/a-visual-explanation-of-sql-joins.html

UPDATE:

我不知道在哪裏你想要的結果的第一列來臨窗體,但下面的查詢應該會得到預期的結果:

SELECT t1.*, t2.sam_subject, t3.subject 
FROM Table1 as t1 
LEFT JOIN table2 as t2 
on t1.email_id = t2.sam_msg_id 
LEFT JOIN table3 as t3 
on t1.email_id = t3.id 
+0

讓我編輯問題。忘了添加數據:) – magicianiam 2012-08-13 21:45:51

+0

你可以添加你想要的輸出嗎? – 2012-08-13 21:56:26

+0

添加了所需的輸出 – magicianiam 2012-08-13 22:07:24