Если требуется получить данные из более чем одной таблицы базы данных, используется операция соединения, определенная в реляционной алгебре. Строки одной таблицы соединяются со строками другой согласно общим значениям в соответствующих столбцах – столбцах первичных и внешних ключей.
Синтаксис простого запроса с соединением.
SELECT таблица.столбец, таблица.столбец
FROM таблица1, таблица2
WHERE таблица1.столбец1 = таблица2.столбец2;
где: таблица.столбец - таблица и столбец, из которых производится выборка данных;
таблица1.столбец1=таблица2.столбец2 - условие, соединяющее таблицы (или задающее их связь).
Эквисоединение.
Этот вид соединения возникает, когда в качестве условия для соединения указывается точное равенство значений одного столбца значениям другого. Часто эти столбцы являются компонентами первичного и внешнего ключа.
Пример 1: Соединение таблиц служащих и отделов для вывода фамилии служащего, номера и названия отдела.
SELECT Emp.fam_cotr, Emp.id_otdel, Sveden.name_otdel
FROM Emp, Sveden
|
|
WHERE Emp.id_otdel = Sveden.id_otdel;
Строки двух таблиц комбинируются и в результат включаются лишь те строки, у которых значения Emp.id_otdel и Sveden.id_otdel равны.
Псевдонимы таблиц.
Для различения одноименных столбцов из разных таблиц используются префиксы в виде имен таблиц. Использование префиксов в виде имен таблиц увеличивает производительность запроса. Одноименные столбцы из разных таблиц можно различать по их псевдонимам. Для разрешения ситуации, когда имена таблиц громоздки или совпадают, также используют псевдонимы таблиц.
Пример 2: Вывод наименования клиента, номера региона и названия региона для всех клиентов. Используются псевдонимы столбцов, а для упрощения ссылок на таблицы – псевдонимы таблиц.
SELECT K. name “Наимен клиента”, R.id_region “Номер региона”, R. name “Назван региона”
FROM klienti K, region R
WHERE R.id_region = K.id_region;
Дополнительные условия поиска.
Помимо соединения в предложении WHERE можно задавать и другие критерии для ограничения получаемых в запросе строк. Поскольку соединение необходимо для подбора соответствий, дополнительное условие добавляется с помощью оператора AND.
Пример 3: Вывод номера отдела и названия отдела сотрудника, в котором работает Кошкина Н.
SELECT E.fam_cotr, E.id_otdel, S.name_otdel