【发布时间】:2011-06-16 20:24:06
【问题描述】:
我有一张歌曲表,有些歌曲是专辑歌曲,有些是单曲...而且我有一张专辑表...
歌曲表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?
谢谢你:)
【问题讨论】:
-
你试过了吗,ORDER BY 2 ASC,1 而不是 ORDER BY 2 DESC,1
-
那不是我想要的...
-
只是出于好奇,为什么专辑中的歌曲有不同的发行日期?
-
不是答案,但我只想说,在专辑表中包含歌曲 ID 委婉地说是没有必要的。而且你应该只知道专辑的发布日期。如果是单曲没关系 - 只需在专辑表中添加一个类型 - ep、lp、双 lp 或单曲。同一张专辑的歌曲如何在不同的时间发行?很奇怪。我认为非常低效的设计。
-
@horatio & @AR :我只是接受这种可能性......我也很好奇如何在 php 和 sql 中做到这一点:P ...
标签: php mysql sql multiple-tables