Проблема в том, что, поскольку вы использовали AND
, lastname
должно быть обоими значениями ... одновременно. Что невозможно. Вы можете переключиться на использование OR
:
SELECT m.movieID, a.actorID, m.title, a.lastName, a.firstName, a.gender
FROM ACTOR a,
MOVIE m
WHERE a.lastName ='Hoffman'
OR a.lastName ='Voight'
Или вы можете использовать предложение IN
:
SELECT m.movieID, a.actorID, m.title, a.lastName, a.firstName, a.gender
FROM ACTOR a,
MOVIE m
WHERE a.lastName IN ('Hoffman', 'Voight')
Логически, IN
эквивалентно использованию OR
. IN
является сокращением, поэтому вам не нужно писать каждый OR
. И IN
имеет тенденцию оптимизировать лучше. Однако Oracle ограничивает количество предложений IN
- вы рискуете ошибкой ORA-01795 при использовании более 1000.
что делать, если я хочу найти это для актеров из 1 фильма, который ВЫБЕРИТЕ movieID, actorID, title, lastName, firstName, пол FROM Actor, фильм WHERE lastName = 'Hoffman' ИЛИ lastName = 'Voight' And title = ' Полуночный Ковбой '; Это правильный синтаксис?
Предоставленный запрос синтаксически правильный, но не соответствует синтаксису ожидаемых результатов. Вам нужно использовать скобки / круглые скобки, например:
WHERE (lastName ='Hoffman' OR lastName ='Voight')
AND title ='Midnight Cowboy'
... чтобы правильно сгруппировать критерии. Это работает как порядок операций в математике ...