Иногда бывает полезным объединять два или более результирующих НД, возвращаемых после выполнения двух или более операторов SELECT. Такое объединение производится при помощи оператора UNION. Результирующие НД должны иметь одинаковую структуру, т.е. одинаковый состав возвращаемых столбцов. Если в результирующих НД имеется одна и та же запись, в сводном НД она не дублируется.
Пример. Соединить результаты выполнения трех запросов:
Произведем объединение трех результирующих наборов данных.
SELECT R.* FROM RASHOD R WHERE R.TOVAR CONTAINING 'Ставрида'
UNION SELECT R.* FROM RASHOD R WHERE R.KOLVO >= 3000
UNION SELECT R.* FROM RASHOD R WHERE R.POKUP = 'Лира, ТОО'
Использование IS NULL
Если требуется выдать все записи, в которых некоторый столбец (или результат вычисления выражения) имеет значение NULL, достаточно в условии поиска указать
<значение> IS [NOT] NULL
Пример. Показать все факты отгрузки товаров со склада, для которых не указан покупатель.
SELECT * FROM RASHOD WHERE POKUP IS NULL
Использование операции сцепления строк
Операция || соединяет два строковых значения, которые могут быть представлены выражениями:
|
|
<строковое выражение1> || <строковое выражение2>
Операцию || можно использовать как после слова SELECT для указания возвращаемых значений, так и в предложении WHERE.
Пример. Выдать в виде единого столбца имена покупателей и названия их городов (в скобках).
SELECT POKUP || ' (' || GOROD || ')' FROM POKUPATELI
COLUMN1 |
Лира ТОО (МОСКВА) |
Саяны ИЧП (Москва) |
Адмирал АО (С Петербург) |
Работа с разными БД в одном запросе
В одном запросе можно использовать таблицы из разных БД. В этом случае имя таблицы указывается в формате ПсевдонимБД:ИмяТаблицы
Под псевдонимом БД понимается псевдоним, определенный в утилите BDE Administrator.
Ниже приведен пример обращения в одном запросе к таблицам БД InterBase (псевдоним ' MONITOR') и Oracle (псевдоним 'DWH'):
SELECT U.* FROM ":MONITOR:NLS " N, ":DWH:OLAP_UPE" U
WHERE U.SC_CODE = N.COD_SCENARIO
ORDER BY U.SC CODE