Mysql 将另一个表列中的数据合并到一个单独的列中
我有3个表(tbl_reservations/tbl_series/tbl_rooms),如何返回一个匹配的房间合并成一列,由空格或“|”分隔,以及来自预订表的数据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
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,但方式不同,现在链接正常。