SQL вложенный WERE - PullRequest
       0

SQL вложенный WERE

0 голосов
/ 26 января 2020

Я новичок в SQL и не понимаю вложенный запрос WHERE:

Когда я впервые запрашиваю:

SELECT movies.title, people.name
FROM stars
INNER JOIN movies ON movies.id = stars.movie_id
INNER JOIN people ON people.id = stars.person_id
INNER JOIN ratings ON ratings.movie_id = stars.movie_id


WHERE people.name = 'Helena'

Возврат правильный ( весь фильм с Еленой).

Тогда я попробовал несколько бесполезных вложенных, чтобы понять, как работает вложенное:

SELECT movies.title, people.name
FROM stars
INNER JOIN movies ON movies.id = stars.movie_id
INNER JOIN people ON people.id = stars.person_id
INNER JOIN ratings ON ratings.movie_id = stars.movie_id
WHERE  people.name = 'Helena' IN (

SELECT movies.title
FROM stars
WHERE people.name = 'Helena' )

Верните мне 0.

Что я думал :

1 получить данные в скобках (проверьте «Елена» в фильмах)

2 получить данные, проверив результат в скобках («Елена» в результате 1)

Кто-то может объяснить мне принцип вложенности SQL с этим запросом?

Заранее спасибо,

1 Ответ

1 голос
/ 26 января 2020

Ваш код не имеет смысла. В этом проблема.

Вот как это анализируется:

WHERE (people.name = 'Helena') IN (SELECT movies.title
                                   FROM stars
                                   WHERE people.name = 'Helena'
                                  )

Первая часть - логическое выражение, которое оценивается в 0, 1 или NULL. Так что, если это правда, это выглядит так:

WHERE 1 IN (SELECT movies.title
            FROM stars
            WHERE people.name = 'Helena'
           )

И "1" кажется маловероятным как имя mov ie.

Подзапрос имеет еще меньше смысла. Вы выбираете из stars, но не ссылаетесь ни на какие столбцы из этой таблицы. Это просто создает большой список заголовков из внешней ссылки - или вообще ни одного, если предложение where неверно.

Учитывая, что этот запрос не имеет смысла, вы можете задать новый запрос предоставьте образцы данных, желаемые результаты и объяснение того, чего вы хотите достичь sh.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...