Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
database.doc
Скачиваний:
0
Добавлен:
23.12.2019
Размер:
1.12 Mб
Скачать

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

Для различения одноименных столбцов из разных таблиц используются префиксы в виде имен таблиц. Использование префиксов в виде имен таблиц увеличивает производительность запроса. Одноименные столбцы из разных таблиц можно различать по их псевдонимам. Для разрешения ситуации, когда имена таблиц громоздки или совпадают, также используют псевдонимы таблиц.

Пример 2: Вывод наименования клиента, номера региона и названия региона для всех клиентов. Используются псевдонимы столбцов, а для упрощения ссылок на таблицы – псевдонимы таблиц.

SELECT K. name “Наимен клиента”, R.id_region “Номер региона”, R. name “Назван региона”

FROM klienti K, region R

WHERE R.id_region = K.id_region;

3. Дополнительные условия поиска.

Помимо соединения в предложении WHERE можно задавать и другие критерии для ограничения получаемых в запросе строк. Поскольку соединение необходимо для подбора соответствий, дополнительное условие добавляется с помощью оператора AND.

Пример 3: Вывод номера отдела и названия отдела сотрудника, в котором работает Кошкина Н.

SELECT E.fam_cotr, E.id_otdel, S .name_otdel

FROM Emp E, Sveden S

WHERE E.id_otdel = S.id_otdel AND INITCAP(E.fam_cotr = ‘Кошкина’);

Пример 4: Вывод фамилии, названия региона и процента комиссионных всех служащих, получающих комиссионные.

SELECT E.fam_cotr , R. name “Назван региона”, S.commission_pct

FROM Emp E, region R, sdelki S

WHERE E.id_cotr = R.id_cotr

AND R.id_cotr = S.id

AND S.commission_pct>0;

4. Внешние соединения.

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

Синтаксис

Select таблица.Столбец, таблица.Столбец

FROM таблица1, таблица2

WHERE таблица1.столбец1 = таблица2.столбец2(+);

где:

таблица1.столбец1 = таблица2.столбец2 - условие, соединяющее таблицы (или задающее их отношение)

(+) - символ внешнего соединения; может использоваться на любой стороне условия в предложении WHERE. (+) указывается после имени таблицы, в которой нет соответствующих строк

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

Условие, предполагающее внешнее соединение, не может использовать оператор IN и быть связанным с другими условиями с помощью оператора OR.

Пример 5: Вывод для каждого клиента его наименования, а также фамилии и идентификационного номера торгового представителя. В список включаются наименования даже тех клиентов, которые не имеют торгового представителя.

SELECT K.name, K id_klient, P.name_predstav

FROM Klienti K, Predstav P

WHERE K.id_klient = P.id_predstav (+);

Соединение таблицы с собой.

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

Пример 6: Вывод имен сотрудников и их менеджеров.

SELECT worker.last_name|| ‘works for’|| manager.last_name

FROM s_emp worker, s_emp manager

WHERE worker.manager_id==manager.id;

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]