2014-09-30 61 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