Общие табличные выражения (CTE) стр. 1 |
|||||
|
Чтобы выяснить назначение общих табличных выражений, давайте начнем с примера. Найти максимальную сумму прихода/расхода среди всех 4-х таблиц базы данных "Вторсырье", а также тип операции, дату и пункт приема, когда и где она была зафиксирована. Задачу можно решить, например, следующим способом.
Здесь мы сначала объединяем всю имеющуюся информацию, а затем выбираем только те строки, у которых сумма не меньше, чем каждая из сумм той же выборки из 4-х таблиц. Фактически, мы дважды написали код объединений четырех таблиц. Как избежать этого? Можно создать представление, а затем адресовать запрос уже к нему:
Так вот, CTE играет роль представления, которое создается в рамках одного запроса и, не сохраняется как объект схемы. Предыдущий вариант решения можно переписать с помощью CTE следующим образом:
Как видите, все аналогично использованию представления за исключением обязательных скобок, ограничивающих запрос; формально, достаточно лишь заменить CREATE VIEW на WITH. Как и для представления, в скобках после имени CTE может быть указан список столбцов, если нам потребуется включить их не все из подлежащего запроса и/или переименовать. Например, (я добавил дополнительно определение минимальной суммы в предыдущий запрос),
Общие табличные выражения позволяют существенно уменьшить объем кода, если многократно приходится обращаться к одним и тем же производным таблицам. Рекомендуемые упражнения: 24
|
|||||
| Свежие новости башкортостана |
| Ленты новостей. Архив новостей и ссылок на тему "Олимпиада-2008 в Пекине". |
| temaufa.ru |
| Ремонт iphone |
| Сайт для гитаристов. Прайс-лист на услуги. |
| centerapple.ru |
| Заказ спецтехники |
| Дорожно-строительная техника. Погрузчики и спецтехника из Японии. |
| umtushino.ru |


