Где предложение, возвращающее значения вне диапазона - PullRequest
1 голос
/ 11 октября 2019

Я пытаюсь получить заранее определенные результаты по задаче домашней работы для вводного класса SQL.

"Напишите запрос для отображения номера книги, названия, темы и стоимости для всех книг, которые находятся напредметы «Middleware» или «Cloud», и их стоимость должна быть более 70 долларов, отсортированных по номеру книги. "

Последний запрос, который я пробовал, возвращает почти правильные результаты, но включает книги со стоимостью книги 69,95.

SELECT BOOK_NUM, BOOK_TITLE, BOOK_SUBJECT, BOOK_COST
FROM BOOK
WHERE BOOK_COST > 70 AND BOOK_SUBJECT = 'Middleware' 
      OR BOOK_SUBJECT = 'Cloud'
ORDER BY BOOK_NUM;

Я попытался увеличить значение до 70,01 и поместить кавычки вокруг 70 и круглые скобки, такие как:

WHERE (BOOK_COST > 70) 
AND BOOK_SUBJECT = 'Middleware' OR BOOK_SUBJECT = 'Cloud'
ORDER BY BOOK_NUM;

Любая обратная связь будет отличной. Спасибо.

Ответы [ 2 ]

4 голосов
/ 11 октября 2019

Вам нужно заключить в скобки раздел WHERE. Попробуйте:

WHERE BOOK_COST > 70 AND ( BOOK_SUBJECT = 'Middleware' OR BOOK_SUBJECT = 'Cloud' )

Объяснение :

Запрос разбит на OR, поэтому он фактически означает: WHERE (BOOK_COST > 70 AND BOOK_SUBJECT = 'Middleware') OR (BOOK_SUBJECT = 'CLOUD'). Это вернет любой предмет книги CLOUD независимо от стоимости. Надеюсь, это поможет.

2 голосов
/ 11 октября 2019

Лучше использовать предложение IN как его аналог OR.

.... where  BOOK_SUBJECT IN 
      ('Middleware', 
    'Cloud') and book_cost>70
...