需要PHP和MySQL的帮助......

时间:2011-06-16 20:24:06

标签: php mysql sql multiple-tables

我有一张歌曲表,一些歌曲是专辑歌曲,有些是单曲......我有一张专辑表......

歌曲表格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_ReleasedTimestamp_Released ...

所以我的问题是如何为相册提供最新歌曲的Date_ReleasedTimestamp_Released

谢谢:)

1 个答案:

答案 0 :(得分:1)

而不是s.Date_Released, s.Timestamp_ReleasedMAX(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;