Mysql 将另一个表列中的数据合并到一个单独的列中

Mysql 将另一个表列中的数据合并到一个单独的列中,mysql,sql,Mysql,Sql,我有3个表(tbl_reservations/tbl_series/tbl_rooms),如何返回一个匹配的房间合并成一列,由空格或“|”分隔,以及来自预订表的数据 tbl_reservations ------------ id, startdate, enddate, series 1, 2014-05-20, 2014-05-22, 1 2, 2014-05-24, 2014-05-25, 2 tbl_series -------- reservation, room 1, 1 1, 3

我有3个表(tbl_reservations/tbl_series/tbl_rooms),如何返回一个匹配的房间合并成一列,由空格或“|”分隔,以及来自预订表的数据

tbl_reservations
------------
id, startdate, enddate, series
1, 2014-05-20, 2014-05-22, 1
2, 2014-05-24, 2014-05-25, 2

tbl_series
--------
reservation, room
1, 1
1, 3
1, 4
2, 1
2, 2

tbl_rooms
-----
id, name
1, room a
2, room b
3, room c
4, room d
当我需要回来的时候是这样的

startdate, enddate, rooms
2014-05-20, 2014-05-22, 1|3|4
2014-05-24, 2014-05-25, 1|2

你想把所有这些都放在一列中吗?在这种情况下,这是重复的:

或者您希望在查询之后有一个表,该表将在其自己的行中包含每个单独的保留。在这种情况下,您需要考虑使用

INNER JOIN
类似于这样的功能:

Select * from tbl_rooms t1 
inner join 
(select * from tbl_reservations st1 
    inner join 
    (select * from tblseries) st2 
    on st1.id=st2.reservation
) t2 on t1.id = t2.room

如上所述,使用组_CONCAT。 顺便说一下,你似乎不需要tbl_房间

select r.id, 
       r.startdate, 
       r.enddate, 
       GROUP_CONCAT(s.room order by s.room separator '|' ) as rooms
from tbl_reservations r
 join tbl_series s on s.reservation = r.series
group by r.id, r.startdate, r.enddate

请参见

查看GROUP_CONCAT。如果我正确理解您的意思,那么您需要查看SQL连接:@MarkP Tsk,Tsk,Tsk;-)@DavidG如果您有某种应用程序级接口,请在那里处理显示逻辑instead@Strawberry哦,我的天。我不知道。抱歉。这不是重复,因为关键是要连接多行而不是单独的列。通过使用GROUP_CONCAT()解决了此问题。使用了GROUP_CONCAT,但方式不同,现在链接正常。