Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
GROUP BY PROD_ID
Запрос выполняется следующим образом: заказы делятся на группы, по одной группе на каждый товар. Затем для каждой группы вычисляется максимальное и минимальное значения столбца QTY по всем строкам, входящим в группу, и генерируется одна итоговая строка результатов. Пример 3.42. Условия отбора групп Предложение HAVING можно использовать для отбора групп строк, участвующих в запросе. Пусть требуется найти максимальное заказанное количество каждого товара. Общее количество заказанного товара не должно превышать 20. SELECT PROD_ID, MAX (QTY) FROM ORDERS GROUP BY PROD_ID HAVING SUM (QTY)< =20 При реализации данного запроса, вначале заказы разделяются на группы по видам товаров. Затем исключаются те группы, в которых общее количество заказанного товара превышает 20. И после этого в оставшихся группах определяется максимальное заказанное количество каждого товара. Пример 3.43. Многотабличные запросы На практике, многие запросы считывают информацию сразу из нескольких таблиц базы данных. Например, необходимо вывести список всех заказов, а также название клиента, сделавшего заказ. Инструкция SELECT должна содержать условие отбора, которое определяет связь между столбцами таблиц ORDERS и CUST. SELECT ORDER_NUM, CUST_NAME, PROD_ID, QTY, DATE_ORDER FROM ORDERS, CUST WHERE CUST.CUST_NUM=ORDERS.CUST_NUM Приведенный запрос отличается от предыдущих, во-первых, тем, что предложение FROMсодержит не одну, а две таблицы. Во-вторых, в условии отбора WHERE CUST.CUST_NUM=ORDERS.CUST_NUM сравниваются столбцы из двух различных таблиц. Эти столбцы называются связанными. В данном примере, столбцы, используемые из разных таблиц, имеют одинаковые имена. В этом случае необходимо указывать полные имена столбцов, которые однозначно определяют их местонахождение. Инструкция на изменения строк имеет формат вида:
UPDATE < имя таблицы> SET < имя столбца> = {< выражение> | NULL} [, SET < имя столбца> = {< выражение> | NULL}... ] [WHERE < условие> ]
Инструкция UPDATE обновляет значения в определенных предложением SET столбцах таблицы для тех строк, которые удовлетворяют условию, заданному предложением WHERE. Новые значения столбцов могут быть пустыми (NULL), либо вычисляться в соответствии с арифметическим выражением. Пример 3.44. Изменение строк Пусть необходимо увеличить на 15% цену только тех товаров, которые стоят меньше 100$. Запрос, сформулированный с помощью оператора UPDATE, может выглядеть так:
|