Предложение SQL WHERE не отфильтровывает указанное значение с помощью! = / <> - PullRequest
0 голосов
/ 01 ноября 2018

Написание запроса на основе назначения. Вопрос спрашивает: «Перечислите все локации за пределами США, в которых есть мероприятия начального или среднего уровня».

Это мой запрос:

SELECT DISTINCT Location.LCountry, Activity.ALevel
FROM Location, Activity
WHERE LCountry != 'USA'
AND ALevel = 'Beginner' OR ALEVEL' = 'Intermediate';

Когда я запускаю этот запрос, я все еще получаю список, который включает значения с США. Когда я не включаю предложение OR ALevel = 'Intermediate", выводится правильный запрос.

Ответы [ 4 ]

0 голосов
/ 01 ноября 2018

Использовать обновленный запрос:

SELECT DISTINCT Location.LCountry, Activity.ALevel
FROM Location, Activity
WHERE LCountry != 'USA'
AND (ALevel = 'Beginner' OR ALEVEL' = 'Intermediate');
0 голосов
/ 01 ноября 2018

Используйте OR condition в скобках

SELECT DISTINCT Location.LCountry, Activity.ALevel
FROM Location inner join Activity on Location.LCountry=Activity.Country
WHERE LCountry != 'USA'
AND (ALevel = 'Beginner' OR ALEVEL = 'Intermediate');

ИЛИ вы можете использовать оператор IN, как показано ниже

SELECT DISTINCT Location.LCountry, Activity.ALevel
FROM Location inner join Activity on Location.LCountry=Activity.Country
WHERE LCountry != 'USA'
AND ALevel in( 'Beginner' , 'Intermediate');
0 голосов
/ 01 ноября 2018

Вам нужно использовать ANSI-92 тип JOIN и правильную цитату как:

SELECT DISTINCT l.LCountry, a.ALevel
  FROM Location l
  LEFT JOIN Activity a
    ON ( l.location = a.location )
 WHERE l.LCountry != 'USA'
   AND ( a.ALevel = 'Beginner' OR a.ALEVEL = 'Intermediate');

кстати, алиасинг делает запрос более привлекательным для чтения.

альтернативно используйте группировку для получения различных результатов как:

SELECT l.LCountry, a.ALevel
  FROM Location l
  LEFT JOIN Activity a
     ON ( l.location = a.location )
 WHERE l.LCountry != 'USA'
   AND ( a.ALevel = 'Beginner' OR a.ALEVEL = 'Intermediate')
 GROUP BY l.LCountry, a.ALevel;
0 голосов
/ 01 ноября 2018

Одинарные кавычки в разных местах не размещаются соответственно или неуместны.

Так что попробуйте следующий запрос

SELECT DISTINCT Location.LCountry, Activity.ALevel
FROM Location, Activity
WHERE Location.LCountry <> 'USA'
AND Activity.ALevel IN ('Beginner','Intermediate')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...