2015-05-01 3 views
0

Итак, я пытаюсь создать отчет, в котором будут представлены лучшие мужские и/или лучшие женские номинации/победители. Однако, когда я запускаю свой выбор, я получаю все фильмы, у которых нет победителей или номинаций. Не удалось выяснить, как избавиться от нулей. Вот мой код. Это, кстати, в Oracle.Устранение определенных нулевых значений в sql select

/*Oscar Nominations for Best Actor Report */ 
SELECT 
    movie.MVYEAR as "Movie Year", 
    movie.MVTITLE as "Movie Title", 
    star.STARNAME as "Star Name", 
    movstar.BESTM as "Best Male", 
    movstar.BESTF as "Best Female" 
FROM 
    movie, 
    star, 
    movstar 
WHERE 
    star.STARNUM = movstar.STARNUM 
AND 
    movie.MVNUM = movstar.MVNUM 
ORDER BY movie.MVYEAR ASC; 

Но мой результат содержит фильмы с лауреатами премии и номинантов, а также фильмы без каких-либо победителей/NOMS в результате запроса, который показывает нулевые значения. Как я могу избавиться от результатов/фильмов с нулями, которые отображаются в запросе?

ответ

1

Вам необходимо добавить условие where, но это также лучше, если вы сохраните свои соединения отдельно от предложения where.

 SELECT movie.MVYEAR as "Movie Year", 
      movie.MVTITLE as "Movie Title", 
      star.STARNAME as "Star Name", 
      movstar.BESTM as "Best Male", movstar.BESTF as "Best Female" 
     FROM movie 
    INNER JOIN movstar 
      ON movie.MVNUM = movstar.MVNUM 
    INNER JOIN star 
      ON star.STARNUM = movstar.STARNUM 
     WHERE movstar.BESTM IS NOT NULL 
      OR movstar.BESTF IS NOT NULL 
    ORDER BY movie.MVYEAR ASC; 
+1

Большое спасибо. Я попытался использовать значение null в предложении where, но я использовал AND вместо OR. Кроме того, из того, что я узнал до сих пор, я не отделил соединения от предложения where, но это выглядит как лучшая идея отсюда. Спасибо еще раз за помощь! – Nick223842

Смежные вопросы