2012-10-05 138 views
0

我有表(MySQL的5.5 INNODB):樣本小數據+切不相關列的問題 - 真正的數據龐大(更多然後10,000,000排在會議桌)如何GROUP_CONCAT與像WHERE條件在這種情況下

INPUT :

day: 

day_id(primary key)|sunday|monday|tuesday|wensday|thursday|friday|saturday 
--------------------------------------------------------------------------- 
60     |1  |1  |1  |1  |1  |1 |1 
74     |0  |1  |0  |0  |0  |0  |0 
98     |0  |0  |0  |0  |0  |0  |0 
..etc...................................................................... 

meeting: 

day_id(foreign key)|time |type 
---------------------------------- 
60     |20:09:00|1 
98     |07:00:00|1 
74     |22:01:00|4 
98     |10:00:00|1 
60     |23:09:00|2 
98     |06:00:00|2 
74     |21:04:00|6 
98     |08:00:00|6 
.....etc..................... 

OUTPUT:

sunday_times   |monday_times       |....etc 
------------------------------------------------------------------------------------------------- 
20:09:00,etc...  | 20:09:00,etc.. | 
................etc.............................................................................. 

我認爲像那(但我是新與SQL洙我不知道是好還是合法的)

SELECT 
    GROUP_CONCAT(time where day.sunday=1 ORDER BY time) as sunday_times, 
    GROUP_CONCAT(time where day.monday=1 ORDER BY time) as monday_times, 
    etc.. 
FROM day 
JOIN meeting ON meeting.day_id=day.day_id 
GROUP BY type 

回答

5

你的語法很接近,你需要使用一個CASE聲明GROUP_CONCAT()內:

SELECT 
    GROUP_CONCAT(case when day.sunday=1 then time end order by time) as sunday_times, 
    GROUP_CONCAT(case when day.monday=1 then time end order by time) as monday_times 
FROM day 
JOIN meeting ON meeting.day_id=day.day_id 
GROUP BY type 

請參閱SQL Fiddle With Demo

+0

感謝您的好評! – Yosef