New*_*ess 4 mysql select group-by left-join
为了简化我的问题:假设我有3张桌子。
Rooms People Things
-------- -------- --------
id| name id | name | fk_rooms id | name | fk_rooms
----------- --------------------- ---------------------
1 | kitchen 1 | John | 1 1 | TV | 2
2 | bedroom 2 | Mary | 2 2 | bed | 2
3 | Andy | 1 3 | sink | 1
4 | Laura| 1
Run Code Online (Sandbox Code Playgroud)
现在我正在做类似的事情:
SELECT r.name AS room_name, p.name AS name, t.name AS thing FROM Rooms r
LEFT JOIN People p ON p.fk_rooms = r.id
LEFT JOIN Things t ON t.fk_rooms = r.id
Run Code Online (Sandbox Code Playgroud)
在我看来,除了与“房间”表具有多对一关系的少数几个之外,它的工作原理非常完美。因此,我希望只接收两行,而不是结果集中的新行与“ Rooms”表具有不同的“ People”和“ Things”名称。
1. kitchen, John, Andy, Laura, sink
2. bedroom, Mary, TV, bed
Run Code Online (Sandbox Code Playgroud)
一GROUP BY对r.id只会select从每个表中的一行。任何帮助深表感谢!
这是您要查找的内容:
SELECT r.name AS room_name,
GROUP_CONCAT(p.name separator ',') AS people_name,
GROUP_CONCAT(t.name separator ',') AS things
FROM Rooms r
LEFT JOIN People p ON p.fk_rooms = r.id
LEFT JOIN Things t ON t.fk_rooms = r.id
GROUP BY r.id
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9309 次 |
| 最近记录: |