连接三个表用一个简单的SQL查询
问题描述:
如果我有这三个表:连接三个表用一个简单的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
答
如果我理解正确的话,我相信你想使用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)。
答
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
到目前为止你写了些什么? – sastorsl 2014-09-30 21:28:34