Создание запросов в СУБД AccessРефераты >> Программирование и компьютеры >> Создание запросов в СУБД Access
Наконец, для получения минимального оклада на 15-5-1994:
Результат: | ||
SELECT МинокладFROM МинокладыWHERE '15-05-1994' BETWEEN Начало AND Конец | ||
Миноклад | ||
14620 |
С помощью 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 |
Наконец, для получения минимального оклада на 15-5-1994:
Результат: | ||
SELECT МинокладFROM МинокладыWHERE '15-05-1994' BETWEEN Начало AND Конец | ||
Миноклад | ||
14620 |
2.3.3. Использование IN
Выдать сведения о блюдах на основе яиц, крупы и овощей SELECT *FROM БлюдаWHERE Основа IN (Яйца Крупа Овощи);
Результат:
БЛ |
Блюдо |
В |
Основа |
Выход |
Труд |
1 |
Салат летний |
З |
Овощи |
200. |
3 |
3 |
Салат витаминный |
З |
Овощи |
200. |
4 |
16 |
Драчена |
Г |
Яйца |
180. |
4 |
17 |
Морковь с рисом |
Г |
Овощи |
260. |
3 |
19 |
Омлет с луком |
Г |
Яйца |
200. |
5 |
20 |
Каша рисовая |
Г |
Крупа |
210. |
4 |
21 |
Пудинг рисовый |
Г |
Крупа |
160. |
6 |
23 |
Помидоры с луком |
Г |
Овощи |
260. |
4 |
Рассмотренная форма IN является в действительности просто краткой записью последовательности отдельных сравнений, соединенных операторами OR. Предыдущее предложение эквивалентно такому: SELECT *FROM БлюдаWHERE Основа=Яйца OR Основа=Крупа OR Основа=Овощи;
Можно задать и NOT IN (не принадлежит), а также возможность использования IN (NOT IN) с подзапросом (см. главу 3).