нужна помощь в исправлении моего кода sql

#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