2010-10-10 54 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