2014-12-15 3 views
-5

Предположим, у меня есть таблица WORLD с колонками Страна, состояние и другие столбцы. мне нужно фильтровать записи такие, чтоФильтрация записей

  • Country = 'USA' and STATE = 'LA' (все другие государства в США должны прийти) и
  • Country = 'CANADA' and state = 'ALBERTA' (все другие государства в КАНАДЕ должны прийти) и

  • Я не хочу какие-либо записи с country = 'GERMANY' (ни одно из государств в Германии должны прийти)

Все эти записи не должны быть Fe tched.

Не могли бы вы дать мне запрос?

+3

Пожалуйста, обратите внимание, принимая регулярную SQL учебного курс, потому что вы просите действительно является basicmost основой SQL. Такой курс также поможет вам точно определить ваши вопросы SO, это поможет вам понять, что вам нужно спросить. – nop77svk

ответ

2

Я предполагаю, что сложная часть здесь находит, как выразить WHERE пункт не соответствующий некоторый критерий.

Вы можете использовать De Morgan's laws:

"не (A и B)" такое же, как "(не А) или (не B)"

«нет (A или B) « - это то же, что и » (не A) и (не B) «.

Так дополнение

... WHERE (Country = 'USA' and STATE = 'LA') 
      OR (Country = 'CANADA' and state = 'ALBERTA') 
      OR (country = 'GERMANY') 

Является

... WHERE (Country <> 'USA' or STATE <> 'LA') 
      AND (Country <> 'CANADA' or state <> 'ALBERTA') 
      AND (country <> 'GERMANY') 

Если вы хотите, чтобы решить, что с помощью реляционной алгебры, вы, вероятно, ищет antijoin. Это выражается в Oracle с помощью оператора NOT IN (см Oracle's documentation):

SELECT .... 
WHERE theID NOT IN (SELECT theID WHERE (Country = 'USA' and STATE = 'LA') 
      OR (Country = 'CANADA' and state = 'ALBERTA') 
      OR (country = 'GERMANY')) 
Смежные вопросы