2010-10-10 62 views
0

我们有一个包含电视频道列表的表格。需要帮助以某种方式制定查询输出

create table listing (id, channel_name, event_name, event_time) 

a) listing (1, "ABC Channel", "All My Children", 6.00 AM) 
b) listing (2, "ABC Channel", "News", 7 AM) 
c) listing (3, "ABC Channel", "One life to live", 7.15 AM) 
d) listing (4, "ABC Channel", "General Hospital", 8.00 AM) 
e) listing (5, "ABC Channel", "News", 9.00 AM) 
f) listing (6, "ABC Channel", "Movie 1", 9.15 AM) 
g) listing (7, "ABC Channel", "News", 10.00 AM) 

我的网页显示特定电视频道列表如下: -

event_name  event_times 
--------------------------------------------- 
All My Children 6.00 AM 
News    7.00 AM, 9.00 AM, 10.00 AM 
One life to live 7.15 AM 
General Hospital 8.00 AM 
Movie 1   9.15 AM 

所有新闻时序整合到一个单一的入口,我目前巩固条目在应用层,是否有可能在查询级别执行此操作。

回答

3

尝试这样:

SELECT event_name, 
     GROUP_CONCAT(event_time SEPARATOR ', ' ORDER BY event_time) AS event_times 
    FROM listing 
GROUP BY event_name 
ORDER BY event_name 

如果你需要单独的通道,这应该工作:

SELECT event_name, 
     GROUP_CONCAT(event_time SEPARATOR ', ' ORDER BY event_time) AS event_times 
    FROM listing 
    WHERE channel_name = 'ABC Channel' 
GROUP BY event_name 
ORDER BY event_name 
1

也许UNION与新闻行沿非新闻。只有新闻需要连接时间。

SELECT event_name, 
     event_times 
FROM (
    SELECT 
    event_name, event_time 
    FROM listing 
    WHERE event_name != 'News' 
    UNION 
    SELECT event_name, GROUP_CONCAT(event_time SEPARATOR ', ') event_time 
    FROM listing 
    WHERE event_name = 'News' 
) AS All 
ORDER BY event_times ASC