Sql 需要帮助以某种方式制定查询输出吗

Sql 需要帮助以某种方式制定查询输出吗,sql,mysql,database,database-design,Sql,Mysql,Database,Database Design,我们有一个包含电视频道列表的表格 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) list

我们有一个包含电视频道列表的表格

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

所有新闻计时都合并到一个条目中,目前我正在应用程序层合并条目,是否可以在查询级别执行此操作。

尝试以下操作:

  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

试着这样做:

  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

可能
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

可能
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