Как присоединиться к первому результату из дочерней таблицы - PullRequest
0 голосов
/ 05 декабря 2011

У меня есть отношение один ко многим в моей таблице 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, похоже, не работают.

Вы можете помочь?

1 Ответ

1 голос
/ 06 декабря 2011
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
LIMIT 1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...