Экранное имя поля (столбца)

При отображении извлеченных из таблицы записей в компоненте DBGrid или в окне утилиты IBConsol имена столбцов соответствуют именам полей. Разрешается при отображении поля на экране изменить его имя, используя ключевое слово AS.

Пример 9.10. Замена на экране имени поля (столбца).

SELECT Name_book AS Название_книги, Year AS Год_издания, Price AS Цена FROM Book

Некоторые компиляторы языка запросов требуют указывать экранное имя поля в двойных кавычках.

Выборка записей из нескольких таблиц

В этом случае в опции FROM надо перечислить имена всех таблиц, из которых будут извлекаться записи. Имена таблиц отделяются друг от друга символом «,» (запятая). Соединение таблиц (связи между таблицами) можно установить или в опции FROM, или в опции WHERE.

Пример 9.11. Извлечь все записи из связанных таблиц, используя опцию WHERE.

SELECT Name book, Town, Izd, Year, Price FROM Book, Town, Izd

WHERE Book.Key town = Town.Key town AND Book.Key_izd = Izd.Key_izd

Связь между таблицами установлена в опции WHERE, внешнему ключу дочерней таблицы Book поставлен в соответствие первичный ключ родительской таблицы (Town или Izd).

Следует обратить внимание на тот факт, что если имена полей во всех таблицах уникальные, то указывать имя таблицы, которой принадлежит поле, необязательно. Если имена полей в разных таблицах одинаковые, то надо обязательно указывать имя таблицы, которой принадлежит поле.

Имя поля от имени таблицы отделяется префиксом «.» (точка).

Поэтому после имени запроса SELECT указаны только имена полей, а в опции WHERE — имена полей и таблиц, разделенные префиксом.

Установить связь между таблицами можно также и в опции FROM. Для этих целей предусмотрены следующие ключевые слова.

а. Ключевое слово JOIN

Ключевое слово JOIN устанавливает связь между двумя таблицами по ключам, которые указаны после ключевого слова ON. В выборку попадут только связанные записи из всех таблиц.

Пример 9.12. Извлечь записи из связанных таблиц, используя опцию FROM.

SELECT Name book, Town, Izd, Year, Price

FROM Book JOIN Town ON Book.Key town = Town.Key town,

Book JOIN Izd ON Book.Key izd = Izd.Key izd

Допускается использование ключевого слова INNER JOIN вместо JOIN. Результат работы запроса не изменяется.

б. Ключевое слово LEFT OUTER

Ключевое слово LEFT OUTER используется совместно с ключевым словом JOIN и предназначено для управления количеством извлекаемых записей. Если ключевое слово LEFT OUTER установлено, то в выборку попадут не только связанные записи, но и все свободные записи из левой (старшей) таблицы.

Пример 9.13. Извлечь записи из связанных таблиц, назначив старшей таблицу Book.

SELECT Name_book, Town, Year, Price FROM Book LEFT OUTER JOIN Town ON Book.Key_town = Town.Key_town

в. Ключевое слово RIGHT OUTER

Использование ключевого слова RIGHT OUTER аналогичное, но правая таблица назначается старшей.

Пример 9.14. Извлечь записи из связанных таблиц, назначив старшей таблицу Town.

SELECT Name_book, Town, Year, Price

FROM Book RIGHT OUTER JOIN Town ON Book.Key_town = Town.Key_town

г. Ключевое слово FULL OUTER

Ключевое слово FULL OUTER разрешает помещение в выборку как связанных записей, так и свободных записей из обеих таблиц.

Пример 9.15. Извлечь связанные и свободные записи из таблиц.

SELECT Name_book, Town, Year, Price FROM Book FULL OUTER JOIN Town ON Book.Key_town = Town.Key_town

При связывании таблиц допускается использование логических операторов =, <, > <=, >= и О.

д. Псевдонимы (алиасы) таблиц

Для компактного написания оператора SELECT допускается имена таблиц заменять псевдонимами (алиасами). Алиасы указываются после имени таблицы в опции FROM. Алиас отделяется от имени таблицы пробелом.

Пример 9.16. Задание псевдонимов таблиц.

SELECT Name_book, Town, Izd, Year, Price FROM Book B, Town T, Izd I

WHERE B.Key town = T.Key town AND B.Key izd = I.Key izd

е. Создание виртуальных полей

Конструкция оператора SELECT позволяет создавать виртуальные поля. Виртуальное поле указывается в общем списке физических полей, значения которых должны быть представлены в выборке.

Виртуальное поле указывается в любом месте списка физических полей в следующем формате: сначала пишется формула для вычисления значения поля, затем указывается параметр AS и потом пишется имя вычисляемого поля. Слева и справа от параметра AS должно быть хотя бы по одному пробелу. Виртуальное поле может быть числовым (вычисляемым по формуле), так и символьным (полученным конкатенацией, т. е. сцеплением значений символьных полей).

Пример 9.17. Извлечь все записи о книгах, при этом создать виртуальное поле «ФИО». Фамилия, имя и отчество автора хранятся в отдельных таблицах.

SELECT Fam + ' ' + Im + ' ' + Ot AS ФИО, Namebook, Town,

Year, Price

FROM Book B, Town T, Fam F, Im I, Ot О

WHERE B.Key town = T.Key town AND B.Keyfam = F.Key fam

AND B.Keyim = I.Keyim AND B.Key ot = O.Key ot;

Создано виртуальное поле «ФИО». Между фамилией, именем и отчеством автора добавлено по одному пробелу.

При создании виртуальных полей допускается использование агрегатных функций, которые рассмотрены в п. 5.2, за исключением функции GEN ID.

 
< Пред   СОДЕРЖАНИЕ     След >