php - 需要 PHP 和 MySQL 方面的帮助...

标签 php mysql sql multiple-tables

我有一个歌曲表,有些歌曲是专辑歌曲,有些是单曲...而且我有一个专辑表...

歌曲表列: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

谢谢:)

最佳答案

不要将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/

相关文章:

mysql - NOW() 函数的正确语法是什么

php - 显示 php oop 表中的数据

php - mysql 服务器在 PDO 中消失了

php - 使用 PHP 创建 bibtex 存档

mysql - 建立图书网站,使用什么 API 以及在数据库中存储什么?

sql - Amazon Redshift key 未强制执行 - 如何防止重复数据?

php - PDO 意外抛出具有多个绑定(bind)参数的绑定(bind)变量错误

mysql - 重复查询而不是 UNION ALL 的更好方法?

mysql - 如何在MYSQL的FROM子句中指定更新的目标表?

SQL - 使用常量值与参数有任何性能差异吗?