У меня есть отношение один ко многим в моей таблице SQL, один фильм может иметь много передач:
Movie -> movie_id, title, ... другие поля
Airings -> movie_id, date_time, channel_id
Таким образом, я хочу вернуть одну строку на основе идентификатора фильма и вернуть встроенную верхнюю трансляцию, отсортированную по дате и времени.
Вот что у меня есть, но это не работает.
SELECT m.movie_id, m.title, next_airing.date_time, next_airing.channel_id
FROM movies m
LEFT JOIN (
SELECT *
FROM movie_airings
ORDER BY date_time DESC
) next_airing
ON next_airing.movie_id=m.movie_id
WHERE m.movie_id = 2
возвращает каждую строку в movie_airings с прикрепленными деталями фильма:
movie_id title date_time channel_id
1 some title 1-11-2011 3
1 some title 2-11-2011 4
1 some title 3-11-2011 1
Куда я иду не так? Если я использую GROUP BY во внутреннем запросе, я могу заставить его вернуть последний несортированный проветривание, но не могу заставить его вернуть самый верхний отсортированный проветривание, так как ORDER BY и GROUP BY, похоже, не работают.
Вы можете помочь?