Нужна помощь с PHP и MySQL ... - PullRequest
0 голосов
/ 17 июня 2011

У меня есть таблица песен, некоторые песни - это песни альбома, а некоторые - синглы ... И у меня есть таблица альбомов ...

Цвета таблицы песен: 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 самой новой песнив нем?

Спасибо:)

1 Ответ

1 голос
/ 17 июня 2011

Вместо s.Date_Released, s.Timestamp_Released напишите MAX(s.Date_Released) as Newest_Date_Released, MAX(s.Timestamp_Released) as Newest_Timestamp_Releasd UPDATE

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; 
...