SQL. Колонна МАКС - PullRequest
       2

SQL. Колонна МАКС

3 голосов
/ 15 сентября 2011

Хорошо, у меня есть 3 таблицы: Фильмы ( Movienum , Название, Год выхода) Актин ( Movienum , StarID ) Звезды ( StarID , Имя, Фамилия)

  • Жирный для первичного ключа, курсив иностранного

Теперь мне нужно найти самый последний фильм, в котором снялся Эдди Мерфи, и вот моя попытка:

SELECT M.Title, M.Yearreleased
FROM Movies M
WHERE M.Yearreleased = (
    SELECT MAX(M.Yearreleased)
    FROM Stars S, ActsIn A, Movies M  
    WHERE S.Givenname = 'Eddie' AND S.Familyname = 'Murphy'
    AND S.StarID = A.StarID
    AND A.MovieNum = M.MovieNum);

Возвращает все фильмы того же года, что и последний фильм Эдди Мерфи.

Любая помощь будет потрясающей: D

Ответы [ 2 ]

3 голосов
/ 15 сентября 2011

Как насчет этого:

SELECT M.Title, M.Yearreleased
FROM Stars S, ActsIn A, Movies M  
WHERE S.Givenname = 'Eddie' AND S.Familyname = 'Murphy'
AND S.StarID = A.StarID
AND A.MovieNum = M.MovieNum
ORDER BY Yearreleased Desc
LIMIT 1

Кроме того, в не очень связанной заметке я хотел бы рассмотреть возможность использования явных объединений вместо неявных объединений. Это бы выглядело так:

SELECT M.Title, M.Yearreleased
FROM Stars S
INNER JOIN ActsIn A on S.StarID = A.StarID
INNER JOIN Movies M on A.MovieNum = M.MovieNum
WHERE S.Givenname = 'Eddie' AND S.Familyname = 'Murphy'
ORDER BY Yearreleased Desc
LIMIT 1

Поверь мне, явное JOIN сделает тебя свободным, когда понадобятся внешние соединения. И запрос становится более понятным и понятным: объединения - это объединения, фильтры - это фильтры

1 голос
/ 15 сентября 2011

Вы можете

ORDER BY Yearrealesed DESC

А если вам нужен только один, то LIMIT 1

Ссылка на ЗАКАЗАТЬ

РЕДАКТИРОВАТЬ: Я видел, что вы не можете использовать LIMIT, вы можете проверить этот старый пост. (Может помочь)

Старый пост с использованием fetch_assoc ()

Также теперь кажется, что вы не используете MYSQL. Вот еще одна ссылка, которая должна дать ответ на любой тип используемого вами SQL.

Возврат только X количества строк

...