2014-05-15 42 views
0

我有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 
+2

看GROUP_CONCAT。 –

+0

如果我明白你的意思,那麼你需要查看SQL連接:http://www.w3schools.com/sql/sql_join.asp – MarkP

+0

@MarkP Tsk,tsk,tsk http://meta.stackexchange.com/問題/ 87678 /令人沮喪的-w3schools-as-a-resource ;-) – Strawberry

回答

0

你想擁有這一切在一列?在這種情況下,這是一個重複:

MySQL, Concatenate two columns

MySQL combine two columns and add into a new column

還是你想這將在其自己的行每一個人預約查詢後,有一個表。在這種情況下,你需要看使用

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 
+0

解決了問題這不是重複的,因爲要連接多行而不是單獨的列。通過使用GROUP_CONCAT()解決了問題。 –

1

如mentionned,使用GROUP_CONCAT。 你似乎並不順便說一下需要tbl_rooms ...

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 

看到SqlFiddle

+0

用過GROUP_CONCAT,但方式不同,現在鏈接正常。 –

相關問題