SQL

SQL задача. Помогите решить

Здравствуйте. Не получается решить задачу((
Выгрузите из таблицы movie название фильмов, описание которых заканчивается подстрокой Mexico. Аренда фильмов из итоговой таблицы должна составлять меньше двух долларов либо их рейтинг не должен быть PG-13.
Подсказка

Скомбинируйте поиск по шаблону с логическими операторами.
SELECT title
FROM movie
WHERE title LIKE '%Mexico'
AND rental_rate < 2
OR NOT rating = 'PG-13';
Ставлю скобки после AND и PG-13, мало строк.
Проблема в том, что у вас неправильно составлено логическое выражение. Вы используете операторы AND и OR, но не используете скобки для определения порядка выполнения операций. В вашем случае, поскольку оператор OR имеет более низкий приоритет, чем оператор AND, запрос может быть интерпретирован неправильно.

Для решения этой проблемы вы можете использовать скобки, чтобы явно определить порядок выполнения операций. Попробуйте следующий запрос:

Код:
SELECT title
FROM movie
WHERE title LIKE '%Mexico'
AND (rental_rate < 2 OR NOT rating = 'PG-13');

В этом запросе мы используем скобки, чтобы объединить условие rental_rate < 2 с оператором OR, и затем объединяем получившееся выражение с условием NOT rating = 'PG-13' с помощью оператора AND.

Надеюсь, это поможет!
Андрей Соловьёв
Андрей Соловьёв
363
Лучший ответ
Борис Маркарьян Операторы and и or имеют одинаковый приоритет и рассматриваются в порядке написания (по очереди).
Евгений Замков Благодарю!!!
... AND (rental_rate < 2 OR rating <> 'PG-13');
Евгений Замков Благодарю!!!
Ваш запрос почти правильный, но вы забыли учесть приоритет операторов AND и OR. По умолчанию оператор AND имеет больший приоритет, чем OR. Это означает, что ваш запрос будет интерпретироваться так:

SELECT title
FROM movie
WHERE (title LIKE '%Mexico' AND rental_rate < 2)
OR NOT rating = 'PG-13';

Таким образом, вы получите все фильмы с подстрокой Mexico и арендой меньше двух долларов, а также все фильмы с рейтингом отличным от PG-13.

Если вы хотите получить только фильмы с подстрокой Mexico и одним из этих условий (аренда меньше двух долларов или рейтинг не PG-13), то вам нужно использовать скобки для группировки условий. Вот как должен выглядеть ваш запрос:

SELECT title
FROM movie
WHERE title LIKE '%Mexico'
AND (rental_rate < 2 OR NOT rating = 'PG-13');
Обратите внимание, что в задании сказано "...ОПИСАНИЕ которых заканчивается подстрокой Mexico." Описание, а не название фильма.

SELECT title
FROM movie
WHERE description LIKE '%Mexico%'
AND (rental_rate < 2
OR rating <> 'PG-13');