#mysql #sql
#mysql #sql
Вопрос:
У меня есть, например, эти 2 таблицы:
Organiser Events
---------- -------
id 1 id
|__ * organiser_id
date
status
Как мне выбрать идентификаторы всех организаторов, для которых последнее событие, статус которого равен, например, «активный».
Я думаю, что мне нужно использовать max (date), возможно, в подзапросе или мне нужно использовать соединение? До сих пор не нашли решения, поэтому любая помощь приветствуется!
Спасибо
Редактировать:
Я только что нашел это решение (не знаю, является ли это лучшим?):
SELECT o.id, e.date
FROM Organiser o
INNER JOIN events e on e.organiser_id = o.id
WHERE e.date = (SELECT max(date)
FROM events e2
WHERE e2.organiser_id = o.id)
Ответ №1:
SELECT
id
FROM
Organiser AS o
WHERE
( SELECT status
FROM Events AS e
WHERE e.organiser_id = o.id
ORDER BY `date` DESC
LIMT 1
) = 'active'
Ответ №2:
попробуйте
SELECT o.name, ep.date
FROM ( SELECT date,max(id) AS maxDateID FROM events es GROUP BY date ) md
INNER JOIN events ep ON ep.id=md.id
INNER JOIN organiser o ON o.id=ep.organiser_id
WHERE e.status='active'