我有一张歌曲表,一些歌曲是专辑歌曲,有些是单曲......我有一张专辑表......
歌曲表格cols:Song_ID, Album_ID, Song_Name, Date_Released, Timestamp_Released
,其他人......
如果Album_ID为[null]
,则表示该歌曲为单曲
相册表格列:Album_ID, Album_Name, Song_IDs, Date_Released
,其他...
注1:相册表中没有Timestamp_Released
注2:Date_Released
只是一天没有时间,即“2011-06-16”
我目前正在使用此查询显示一个表格(在我的html / php页面中),每一行都是一个或一个专辑(一个专辑中的歌曲作为专辑显示在一行中)
SELECT
IF(Album_ID IS NULL,s.Song_Name,a.Album_Name) as name,
IF(Album_ID IS NULL,s.Date_Released,a.Date_Released) as datereleased,
s.Timestamp_Released
FROM songs s LEFT JOIN albums a ON (s.Album_ID = a.Album_ID)
GROUP BY 1,2
ORDER BY 2 DESC,1
LIMIT 0,10;
上面的查询根据日期订购歌曲和专辑列表,并为专辑提供专辑中最早的歌曲的Date_Released
和Timestamp_Released
...
所以我的问题是如何为相册提供最新歌曲的Date_Released
和Timestamp_Released
?
谢谢:)
答案 0 :(得分:1)
而不是s.Date_Released, s.Timestamp_Released
写MAX(s.Date_Released) as Newest_Date_Released, MAX(s.Timestamp_Released) as Newest_Timestamp_Releasd
的更新
SELECT
IF(Album_ID IS NULL,s.Song_Name,a.Album_Name) as name,
MAX(IF(Album_ID IS NULL,s.Date_Released,a.Date_Released)) as datereleased,
MAX(s.Timestamp_Released)
FROM songs s LEFT JOIN albums a ON (s.Album_ID = a.Album_ID)
GROUP BY 1
ORDER BY 2 DESC,1
LIMIT 0,10;