我有一个歌曲表,有些歌曲是专辑歌曲,有些是单曲...而且我有一个专辑表...
歌曲表列: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
?
谢谢:)
最佳答案
不要将s.Date_Released、s.Timestamp_Released
写入MAX(s.Date_Released)作为Newest_Date_Released,MAX(s.Timestamp_Released)作为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;
关于php - 需要 PHP 和 MySQL 方面的帮助...,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6378146/