PostgreSQL соответствует строке из вложенного запроса - PullRequest
0 голосов
/ 27 сентября 2019

Я пытаюсь выполнить запрос, в котором мы находим фильмы по имени актера.Когда я запускаю

SELECT known_titles
from name_basics
where name like 'Tom Cruise'

Источник данных, который у нас есть, возвращает одно поле TEXT tt0181689,tt0092099,tt0116695,tt0325710.

Как я могу использовать это для повторного запроса?Мой основной запрос:

SELECT movie_name
from MOVIE_INFO
where movie_id like (SELECT known_titles
                     from name_basics
                     where name like 'Tom Cruise'
                    )

Но это ничего не возвращает.Есть ли способ, которым я могу сделать поиск по шаблону movie_id в PostgreSQL, который увидит, что похоже?Что-то вроде SELECT movie_name from MOVIE_INFO where movie_id in tt0181689,tt0092099,tt0116695,tt0325710?

Список tt0181689,tt0092099,tt0116695,tt0325710 хранится как TEXT в одной ячейке и копируется из файла CSV с помощью команды PostgreSQL \copy.

1 Ответ

1 голос
/ 27 сентября 2019

Запрос с подвыбором вызовет ошибку, если подвыбор вернет более одной строки.Ваш код, вероятно, не обрабатывает ошибки надлежащим образом, но игнорирует их, поэтому результат выглядит пустым.

Вам необходимо изучить базовую концепцию SQL «join»:

SELECT movie_info.movie_name
FROM movie_info
   JOIN name_basics
      ON movie_name.movie_id = name_badics.known_titles
WHERE name_basics.name = 'Tom Cruise'

Замечания:

  • Имена таблиц и столбцов не очень убедительны.

  • Использование LIKE не имеет смысла, если вpattern.

  • Последнее предложение вашего вопроса не имеет для меня никакого смысла.Список является результатом запроса: как он может быть получен из файла одновременно?

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