CROSS APPLY / OUTER APPLY стр. 1 |
||
Оператор CROSS APPLY появился в Cистема управления реляционными базами данных (СУБД), разработанная корпорацией Microsoft. Язык структурированных запросов) — универсальный компьютерный язык, применяемый для создания, модификации и управления данными в реляционных базах данных.
SQL Server 2005. Он позволяет выполнить соединение двух табличных выражений. При этом каждая строка из левой таблицы сочетается с каждой строкой из правой. Давайте попробуем разобраться в том, какие преимущества дает нам использование этого нестандартного оператора. Первый пример. Мы получили просто декартово произведение таблиц Product и Laptop. Аналогичный результат мы можем получить с помощью следующих стандартных запросов: илиПоставим теперь более осмысленную задачу. Для каждого ноутбука дополнительно вывести имя производителя. Эту задачу мы можем решить с помощью обычного соединения: С помощью CROSS APPLY решение этой же задачи можно написать так:
"И что тут нового"? - спросите вы. Запрос стал даже более громоздким. Пока да, можно согласиться. Но уже здесь можно заметить весьма важную вещь, которая отличает CROSS APPLY от других видов соединений. А именно, мы используем коррелирующий подзапрос в предложении FROM, передавая в него значения из левого табличного выражения. В данном примере это значения из столбца P.model. Т.е. для каждой строки из левой таблицы правая таблица будет своя. Поняв это, мы можем воспользоваться данными преимуществами. Рассмотрим следующую задачу. Для каждого ноутбука дополнительно вывести максимальную цену среди ноутбуков того же производителя. Эту задачу мы можем решить с помощью коррелирующего подзапроса в предложении SELECT:
Пока решение, использующее CROSS APPLY, будет мало чем отличаться от вышеприведенного:
|