#sql #union
#sql #объединение
Вопрос:
итак, у меня такой вопрос: напишите инструкцию SQL, которая отображает сведения о фильмах (название, жанр и классификация). Отображать только фильмы, которые не основаны на «преступлении», а название не состоит из одного слова (например, «лев» — это название фильма из одного слова, тогда как «отряд самоубийц» — это не одно слово).
и я думаю, что мне нужно использовать оператор объединения, но то, что я делал, не работает.
SELECT MOVIEGENRE, MOVIENAME
FROM MOVIE
WHERE MOVIEGENRE NOT LIKE '%CRIME%'
UNION
SELECT MOVIENAME, MOVIEGENRE
FROM MOVIE
WHERE MOVIENAME NOT LIKE '% %';
кто-нибудь может мне помочь?
я продолжаю получать этот вывод:
MOVIEGENRE MOVIENAME
-------------------- --------------------
ADVENTURE PETES DRAGON
ANIMATION FINDING DORY
CRIMINAL CRIME
HORROR LIGHTS OUT
HORROR THE CONJURING 2
NERVE CRIME
кстати, я студент 1-го курса университета 🙂
Комментарии:
1. Какую базу данных вы используете (MySQL, SQL Server и т. Д.)?
Ответ №1:
Просто объедините два ваших условия для фильтрации в одно WHERE
предложение:
SELECT MOVIEGENRE,
MOVIENAME
FROM MOVIE
WHERE MOVIEGENRE NOT LIKE '%CRIME%' AND -- not crime based
MOVIENAME LIKE '% %' -- name is two or more words
Ответ №2:
Попробуйте это:
SELECT MOVIEGENRE, MOVIENAME
FROM MOVIE
WHERE MOVIEGENRE NOT LIKE '%CRIME%'
AND INSTR(MOVIENAME,' ',1,1)=0
Вам не требуется объединение всего и достаточно условия.
Ответ №3:
Если вы используете SQL Server
, используйте приведенный ниже скрипт.
SELECT MOVIEGENRE, MOVIENAME
FROM MOVIE
WHERE MOVIEGENRE NOT LIKE '%CRIME%' --Getting MOVIEGENRE which is not crime
AND LTRIM(RTRIM(MOVIENAME)) like '% %' --Getting MOVIENAME contains more than one word