2016-10-07 3 views
0

поэтому у меня есть этот вопрос: Напишите заявление 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 

КСТАТИ И.М. первый год Uni студент :)

+2

В какой базе данных вы используете (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 
+0

да спасибо вы решили мою проблему. :) – Marissak

0

Попробуйте это:

SELECT MOVIEGENRE, MOVIENAME 
FROM MOVIE 
WHERE MOVIEGENRE NOT LIKE '%CRIME%' 
AND INSTR(MOVIENAME,' ',1,1)=0 

Вам не требуется объединение всех только и условие достаточно.

0

Если вы используете 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