日期表:
id start_date end_date
1 2013-04-28 2013-04-29
3 2013-04-18 2013-04-25
4 2013-05-22 2013-04-30
5 2013-05-02 2013-04-30
6 2013-04-29 2013-04-30
时间表:
id start_time end_time
1 11:00 AM 12:00 AM
2 12:00 PM 03:00 PM
App表:
id app_name
1 Test
2 Test1
表的关系存储在相关表中:
app_id date_id time_id
1 1 1
1 1 2
2 1 2
我触发了一个sql查询来从数据库中获取数据:
SELECT app.id as id,app.app_name,date.id as date_id ,
date.start_date,date.end_date,time.id as time_id,time.start_time,time.end_time as end_time
FROM related_data
INNER JOIN app ON app.id = app_id
INNER JOIN DATE ON date.id = date_id
INNER JOIN Time ON time.id = time_id
LIMIT 0 , 30
但它返回:
id app_name date_id start_date end_date time_id start_time end_time
1 Test 1 2013-04-28 2013-04-29 1 11:00 AM 12:00 AM
1 Test 1 2013-04-28 2013-04-29 2 12:00 PM 03:00 PM
2 Test1 1 2013-04-28 2013-04-29 2 12:00 PM 03:00 PM
但我想这样:
id app_name date_id start_date end_date time_id start_time end_time
1 Test 1 2013-04-28 2013-04-29 1,2 11:00 AM,12:00PM 12:00 AM,03:00PM
2 Test1 1 2013-04-28 2013-04-29 2 12:00 PM 03:00 PM
如果app id相同且日期ID或时间id不同,则将数据连接起来。
答案 0 :(得分:1)
使用GROUP_CONCAT
SELECT app.id as id,
app.app_name,
date.id as date_id ,
date.start_date,
date.end_date,
GROUP_CONCAT(time.id) as time_id,
GROUP_CONCAT(time.start_time) start_time,
GROUP_CONCAT(time.end_time) as end_time
FROM related_data
INNER JOIN app
ON app.id = app_id
INNER JOIN DATE
ON date.id = date_id
INNER JOIN Time
ON time.id = time_id
GROUP BY app.id as id,
app.app_name,
date.id as date_id ,
date.start_date,
date.end_date
LIMIT 0, 30