Объединение условий с помощью AND
Одного условия часто мало. Родитель ищет игру для семилетнего ребёнка, и она должна стоить меньше $20. Соедините два условия с помощью AND:
SELECT title, age_rating, price
FROM games
WHERE age_rating <= 7
AND price < 20
ORDER BY price, title;| title | age_rating | price |
|---|---|---|
| Cube Logic | 3 | 5 |
| Word Quest | 7 | 10 |
| Bakery Story | 3 | 15 |
| Ocean Deep | 7 | 15 |
| Pixel Racer | 3 | 15 |
Строка попадает в результат, только если оба условия для неё истинны. Cube Logic подходит с 3 лет и стоит $5: оба условия истинны, значит, игра в результате. Goal Rush тоже подходит с 3 лет, но стоит $50: второе условие ложно, поэтому игра пропускается.
Соединять можно сколько угодно условий, и строка должна удовлетворять всем. Пишите каждое условие на отдельной строке, начиная её с AND, — тогда даже длинное условие легко читать. Приключенческие игры для 12-летних не дороже $20:
SELECT title, age_rating, price
FROM games
WHERE genre = 'Adventure'
AND age_rating <= 12
AND price <= 20
ORDER BY title;| title | age_rating | price |
|---|---|---|
| Lost Temple | 12 | 20 |
| Ocean Deep | 7 | 15 |
Диапазон значений, например цены от $10 до $20, — это тоже два условия, соединённые через AND: price >= 10 AND price <= 20. (Более короткая запись появится позже на этом уроке.)
Типичная ошибка: WHERE price >= 10 AND <= 20. По-русски вы бы сказали «цена не меньше 10 и не больше 20», но в SQL каждое условие должно быть полным само по себе. Во втором условии здесь нет столбца, и SQLite сообщает:
Error on line 1: near "<=": syntax errorПишите столбец в каждом условии: price >= 10 AND price <= 20.
Задание
- 1
Покажите ID покупателя, количество звёзд и комментарий в отзывах на игру с ID 1 (
game_id), у которых не меньше 4 звёзд. Отсортируйте их по звёздам, от большего, а затем по ID покупателя:customer_id stars comment 2 5 Best RPG I have played in years! 8 5 NULL 1 4 Great story, a bit long. - 2
Ниже покажите название, возрастной рейтинг и цену игр, подходящих 12-летнему (возрастной рейтинг не больше 12), которые стоят не меньше $35. Сначала самые дорогие, а игры с одинаковой ценой — по названию:
title age_rating price Goal Rush 3 50 Ice Hockey Pro 3 45 Galaxy Trader 12 35 Star Pilots 12 35