Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Посібник Мова SQL кредитно-модульний.doc
Скачиваний:
35
Добавлен:
01.05.2015
Размер:
1.25 Mб
Скачать

Внутрішні з'єднання

У внутрішніх з'єднаннях значення стовпців, що з'єднуються, визначаються за допомогою оператора порівняння. У стандарті SQL-92 внутрішні з'єднання задаються в конструкціях FROM абоWHERE. Внутрішні - єдиний тип з'єднань, які є у SQL.-92. У наступному операторі SELECT внутрішнє з'єднання використовується для одержання даних з таблицьPublishersіTitlesбази даних Pubs:

SELECT t.Title, p.Pub_name

FROM Publishers AS p INNER JOIN Titles AS t

ON p.Pub_id = t.Pub_id

ORDER BY Title ASC

Цей оператор SELECTодержує дані зі стовпцяTitleтаблиціTitles (t)і стовпцяPub_nameтаблиціPublishers (p).Оскільки в цьому операторі застосовується внутрішнє з'єднання, він повертає тільки ті рядки, для яких у стовпцях з'єднання (p.Pub_id і t.Pub_id) є значення, які відповідають одне одному.

Зовнішні з'єднання

SQL Server підтримує три типи зовнішніх з'єднань: ліві, праві і повні. Ліве зовнішнє з'єднання посилається на всі рядки лівої таблиці, а праве зовнішнє з'єднання - на всі рядки правої таблиці. Повне зовнішнє з'єднання повертає всі рядки з обох таблиць.

Використання лівих зовнішніх з'єднань

Результуючий набір, згенерований оператором SELECT, у який входить ліве зовнішнє з'єднання, складається із всіх рядків таблиці, на яку посилається конструкціяLEFT OUTER JOIN, розташований ліворуч від цієї конструкції. З таблиці, що розташована праворуч, витягаються тільки ті рядки, які відповідають умові з'єднання. У наступному прикладі в операторіSELECTдля одержання імен, прізвищ авторів і (де можливо) назв всіх видавництв, розташованих у тих же місцях, де проживають автори, застосовується ліве зовнішнє з'єднання:

USE Pubs

SELECT a.Au_fname. a.Au,lname, p.Pub_name

FROM Authors a LEFT OUTER JOIN Publishers p

ON a.City = p.City

ORDER BY p.Pub_name ASC, a.Au_lname ASC, a.Au_fname ASC

У результуючому наборі цього запиту наведено список імен всіх авторів з таблиці Authors. Однак у нього ввійдуть тільки ті видавництва, які розташовані в тих же містах, де живуть автори. Якщо видавництво розташоване в якомусь іншім місті, у стовпецьPub_nameрезультуючого набору повертається порожнє значення.

Використання правих зовнішніх з'єднань

Результуючий набір, згенерований оператором SELECT, у який входить праве зовнішнє з'єднання, складається із всіх рядків таблиці, що розташована праворуч від конструкціїRIGHT OUTER JOIN. З таблиці, що розташована ліворуч, витягаються тільки ті рядки, які відповідають умові з'єднання.

У наступному прикладі в операторі SELECTправе зовнішнє з'єднання застосовується для одержання списку назв видавництв і імен із прізвищами авторів, якщо проживають у тому ж місті, де розташоване видавництво:

USE Pubs

SELECT a.Au_fname, a.Au_lname, p.Pub_name

FROM Authors a RIGHT OUTER JOIN Publishers p

ON a.City = p.City

ORDER BY p.Pub_name ASC, a.Au_lname ASC, a.Au_fname ASC

У результуючий набір цього запиту ввійдуть назви всіх видавництв із таблиці Publishers, а також імена тих авторів, які живуть у тих же містах, де розташовані видавництва. Якщо автор живе не в тому місті, де розташоване видавництво, то в стовпці результуючого наборуAu_fnameіAu_lnameповертаються порожні значення.