Создание запросов в СУБД AccessРефераты >> Программирование и компьютеры >> Создание запросов в СУБД Access
2.3. Выборка c использованием фразы WHERE
2.3.1. Использование операторов сравнения
В синтаксисе фразы WHERE (п.2.1) показано, что для отбора нужных строк таблицы можно использовать операторы сравнения = (равно), <> (не равно), < (меньше), <= (меньше или равно), > (больше), >= (больше или равно), которые могут предваряться оператором NOT, создавая, например, отношения "не меньше" и "не больше".
Так, для получения перечня продуктов, практически не содержащих углеводов, можно сформировать запрос SELECT Продукт, Белки, Жиры, Углев, K, Ca, Na, B2, PP, C FROM ПродуктыWHERE Углев = 0;
и получить:
Продукт |
Белки |
Жиры |
Углев |
K |
Ca |
Na |
B2 |
PP |
C |
Говядина |
189. |
124. |
0. |
3150 |
90 |
600 |
1.5 |
28. |
0 |
Судак |
190. |
80. |
0. |
1870 |
270 0 |
1.1 |
10. |
30 |
Возможность использования нескольких условий, соединенных логическими операторами AND, OR, AND NOT и OR NOT, позволяет осуществить более детальный отбор строк. Так, для получения перечня продуктов, практически не содержащих углеводов и натрия, можно сформировать запрос: SELECT Продукт, Белки, Жиры, Углев, K, Ca, Na, B2, PP, C FROM ПродуктыWHERE Углев = 0 AND Na = 0;
Результат запроса имеет вид
Продукт |
Белки |
Жиры |
Углев |
K |
Ca |
Na |
B2 |
PP | |
C | |||||||||
Судак |
190. |
80. |
0. |
1870 |
270 |
0 |
1.1 |
10. |
30 |
Добавим к этому запросу еще одно условие SELECT Продукт, Белки, Жиры, Углев, K, Ca, Na, B2, PP, C FROM ПродуктыWHERE Углев = 0 AND Na = 0 AND Продукт <> 'Судак';
и получим на экране сообщение "No rows exist or satisfy the specified clause" или аналогичное (в зависимости от вкусов разработчиков разных СУБД), информирующее об отсутствии строк, удовлетворяющих заданному(ым) условию(ям).
2.3.2. Использование BETWEEN
С помощью BETWEEN . AND . (находится в интервале от . до .) можно отобрать строки, в которых значение какого-либо столбца находятся в заданном диапазоне.
Например, выдать перечень продуктов, в которых значение содержания белка находится в диапазоне от 10 до 50:
Результат: | ||
SELECT Продукт, БелкиFROM ПродуктыWHERE Белки BETWEEN 10 AND 50; | ||
Продукт |
Белки | |
Майонез |
31. | |
Сметана |
26. | |
Молоко |
28. | |
Морковь |
13. | |
Лук |
17. |
Можно задать и NOT BETWEEN (не принадлежит диапазону между), например:
Результат: | |||
SELECT Продукт, Белки, ЖирыFROM Продукты WHERE Белки NOT BETWEEN 10 AND 50 AND Жиры > 100; | |||
Продукт |
Белки |
Жиры | |
Говядина |
189. |
124. | |
Масло |
60. |
825. | |
Яйца |
127. |
115. |
BETWEEN особенно удобен при работе с данными, задаваемыми интервалами, начало и конец которых расположен в разных столбцах.
Для примера воспользуемся таблицей "минимальных окладов" (табл. 2.1), величина которых непосредственно связана со студенческой стипендией. В этой таблице для текущего значения минимального оклада установлена запредельная дата окончания 9 сентября 9999 года.
Таблица 2.1 Минимальные оклады
Миноклад |
Начало |
Конец |
2250 |
01-01-1993 |
31-03-1993 |
4275 |
01-04-1993 |
30-06-1993 |
7740 |
01-07-1993 |
30-11-1993 |
14620 |
01-12-1993 |
30-06-1994 |
20500 |
01-07-1994 |
09-09-9999 |
Если, например, потребовалось узнать, какие изменения минимальных окладов производились в 1993/94 учебном году, то можно выдать запрос SELECT Начало, МинокладFROM МинокладыWHERE Начало BETWEEN '1-9-1993' AND '31-8-1994'
и получить результат:
Начало |
Миноклад |
01-12-1993 |
14620 |
01-07-1994 |
20500 |
Отметим, что при формировании запросов значения дат следует заключать в апострофы, чтобы СУБД не путала их с выражениями и не пыталась вычитать из 31 значение 8, а затем 1994.
Для выявления всех значений минимальных окладов, которые существовали в 1993/94 учебном году, можно сформировать запрос SELECT *FROM МинокладыWHERE Начало BETWEEN '1-9-1993' AND '31-8-1994'OR Конец BETWEEN '1-9-1993' AND '31-8-1994'
Миноклад |
Начало |
Конец |
7740 |
01/07/1993 |
30/11/1993 |
14620 |
01/12/1993 |
30/06/1994 |
20500 |
01/07/1994 |
09/09/9999 |