2017-08-09 66 views
1

我的內部連接僅返回第一行,但在我的表中有多行。我有3張桌子。我正在執行從主要到次要到第三個的連接。內部連接返回單個行而不是多個

主(左連接) - >次級(內部連接) - >第三(返回一行而不是多個)

第一表

id name 
1 john 
2 abel 
3 julia 

第二表

id first_table(FK) 
1 1 
2 2 

三表

id second_table(FK) name 
1 1    hello 
2 1    haha 
3 2    thanks 

查詢

SELECT * FROM first_table 
LEFT JOIN second_table ON first_table.id = second_table.first_table 
INNER JOIN third_table ON third_table.second_table = second_table.id 

它返回第一臺和第二臺與第三臺

單行我想要什麼:

返回第一個表和與多行第二個表,從第三個表

+0

'right outer join'? – kukkuz

+0

是一個錯字? left_table加入first_table?它可以second_table? – Learning

+0

另外,是否需要顯示first_table中的所有行,而不管該標識是否存在於second_table中? – Learning

回答

0

你可以做

SELECT * FROM first_table 
LEFT JOIN 
(second_table 
INNER JOIN third_table ON third_table.second_table = second_table.id) 
ON first_table.id = second_table.first_table; 

或類似的結果作爲原始查詢。

SELECT * FROM first_table 
INNER JOIN 
(second_table 
INNER JOIN third_table ON third_table.second_table = second_table.id) 
ON first_table.id = second_table.first_table; 
0

您的查詢可能是錯誤的。您正在從first_table獲取數據,並在JOIN條件使用second_table.first_table列時在first_table上應用LEFT連接。這將在執行時拋出異常。它應該是這樣的,並會給你多個記錄你想要的。我在我的最後測試了這個。

SELECT * FROM first_table 
LEFT JOIN second_table ON first_table.id = second_table.first_table 
INNER JOIN third_table ON third_table.second_table = second_table.id 
+0

抱歉,我在查詢時犯了一個錯誤,應該將它留給second_table而不是first_table。謝謝澄清。 –

相關問題