serejatoje
@serejatoje

Как сделать выборку по последней дате?

Всем привет! Ребят, у меня есть 2 таблицы. В первой albums - id, user_id, title, file, create_date Вторая таблица photos - id, album_id, title, file, create_date. Я хочу вывести все записи (из таблицы albums), чтобы в результате была create_date и file из таблицы photos. Тоесть я вывожу альбомы, в которых будет своя миниатюра, тоесть самая последняя фотка по дате из Photos для этого альбома. Мой запрос выглядит так:
SELECT a.*, p.file, max(p.date) as pdate, COUNT(p.id) as photo_count
            FROM
                `albums` a
            left JOIN `photos` p ON p.album_id = a.id
            WHERE
                a.`user_id` = ?
            GROUP BY a.id
            ORDER BY
                a.`date` DESC
            LIMIT ?
  • Вопрос задан
  • 261 просмотр
Решения вопроса 1
mahoho
@mahoho
Full stack certified PHP developer.
У вас в запросе неполный GROUP BY, так делать не надо.
Я бы сделал подзапросами, вот так:
SELECT a.*,
	album_photos.file,
	album_photos.date,
	(select COUNT(id) from photos where album_id = a.id) as photo_count
FROM
	`albums` as a
	left join photos as album_photos on	a.id = album_photos.album_id
																	and album_photos.`date` = ( select max(`date`) from `photos` where album_id = a.id)
WHERE
	a.`user_id` = 1
ORDER BY
	a.`date` DESC
LIMIT 10

С подзапросами сложнее ошибиться.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы