2014-09-30 93 views
0

如果我有這三個表:連接三個表用一個簡單的SQL查詢

table1: id, title, content 
connection: id_t1, id_t2 
table2: id, title, content 

在我來說,我只是選擇table1的一行。對於這個結果,在表2中有很多行。這兩個表的連接可以在'連接'表中找到

如何創建查詢以獲得此結果?

table1-title 
table2-content1 
table2-content2 
table2-content3 
table1-content 
+0

到目前爲止你寫了些什麼? – sastorsl 2014-09-30 21:28:34

回答

0

如果我理解正確的話,我相信你想使用GROUP BY與GROUP_CONCAT功能
查詢會是這個樣子:

SELECT table1.title, GROUP_CONCAT(table2.content) as table2.group_content, table1.content 
FROM table1 
JOIN connection on table1.id = id_t1 
JOIN table2 on connection.id_t2 = table2.id 
GROUP BY table2.content 

這會給你一個行對每個表1。 id,並將多個table2.content行連接成一列(在本例中稱爲table2.group_content)。

0
select title from table1 where title_id = 1 
UNION 
select t2.content 
from table2 t2, table1 t1, connection c 
where t1.title_id = 1 
    and t1.title_id = c.id_t1 
    and c.id_t2 = t2.title_id 
UNION 
select content from table1 where title_id = 1 
+0

1.這應該使用'UNION ALL'來獲得正確的順序,2.使用'INNER JOIN'會更好,3.請給你的代碼添加一些解釋 – 2014-09-30 23:12:47