Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

Многотабличные запросы

Читайте также:
  1. Вложенные запросы
  2. Запросы
  3. Запросы как основная часть ГИС
  4. Запросы на обновление записей
  5. Запросы на создание таблицы
  6. Итоговые запросы.
  7. Многотабличные запросы

Пример 1. Простое соединение

SELECT c.clientNo, fName, lName, propertyNo, comment

FROM Клиент c, Осмотр v

WHERE c.clientNo = v.clientNo;

Таблица 1 - Результат выполнения запроса

clientNo fName lName propertyNo comment
CR76 Игорь Воронов PG4 не нравится
CR76 Игорь Воронов PG16  
CR56 Ира Перова PG4 маленькая
CR56 Ира Перова PG36  
CR56 Ира Перова PG16 не нравится

Пример 2. Сортировка результатов соединения таблиц

SELECT s.branchNo, s.staffNo, fName,lName, propertyNo

FROM Персонал s, Объекты_Недвижимости p

WHERE s.staffNo = p.staffNo

ORDER BY s.branchNo, s.staffNo, propertyNo;

Таблица 2 - Результат выполнения запроса

branchNo staffNo fName lName propertyNo
B001 SKh2 Анна Петренко PG4
B001 SKh2 Анна Петренко PG16
B001 SKh3 Ольга Петренко PG36
B005 SK2 Сергей Чижов CA15
B005 SK2 Сергей Чижов CA09
B003 SS2 Сергей Ветров КA34
B007 SK3 Семен Соколов CA19

Пример 3. Соединение трех таблиц

SELECT b.branchNo, b.city, s.staffNo, fName, lName, propertyNo

FROM Отделение b, Персонал s, Объекты_Недвижимости p

WHERE b.branchNo = s.branchNo AND s.staffNo = p.staffNo

ORDER BY b.branchNo, s.staffNo, propertyNo;

Таблица 3 - Результат выполнения запроса

branchNo city staffNo fName lName propertyNo
B001 Харьков SKh2 Анна Петренко PG4
B001 Харьков SKh2 Анна Петренко PG16
B001 Харьков SKh3 Ольга Петренко PG36
B003 Севастополь SS2 Сергей Ветров КA34
B005 Киев SK2 Сергей Чижов CA09
B005 Киев SK2 Сергей Чижов CA15
B007 Киев SK3 Семен Соколов CA19

Пример 4. Группирование по нескольким столбцам

SELECT s.branchNo, s.staffNo, COUNT(*) AS count

FROM Персонал s, Объекты_Недвижимости p

WHERE s.staffNo = p.staffNo

GROUP BY s.branchNo, s.staffNo

ORDER BY s.branchNo, s.staffNo;

Таблица 4 - Результат выполнения запроса

branchNo staffNo count
B001 SKh2  
B001 SKh3  
B005 SK2  
B003 SS2  
B007 SK3  

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

Таблица 5 – Таблица Отделение1

branchNo bcity
B001 Харьков
B005 Киев
B003 Севастополь

Таблица 6 – Таблица Объекты_Недвижимости1

propertyNo pcity
PG4 Харьков
КA34 Ялта
CA15 Киев

Обычное (внутреннее) соединение этих таблиц выполняется с помощью следующего оператора SQL:

SELECT b.*, p.*

FROM Отделение1 b, Объекты_Недвижимости1 p

WHERE b.bcity = p.pcity;

Таблица 7 - Результат внутреннего соединения упрощенных таблиц Отделение1 и Объекты_Недвижимости1

branchNo bcity propertyNo pcity
B001 Харьков PG4 Харьков
B005 Киев CA15 Киев

Пример 5. Левое внешнее соединение.

SELECT b.*, р.*

FROM Отделение1 b LEFT JOIN Объекты_Недвижимости1 p ON

b.bcity = p.pcity;

Таблица 8 - Результат выполнения запроса

branchNo bcity propertyNo pcity
B001 Харьков PG4 Харьков
B005 Киев CA15 Киев
B003 Севастополь null null

Пример 6. Правое внешнее соединение.

SELECT b.*, p.*

FROM Отделение1 b RIGHT JOIN Объекты_Недвижимости1 p ON

b.bcity = p.pcity;

Таблица 9 - Результат выполнения запроса

branchNo bcity propertyNo pcity
B001 Харьков PG4 Харьков
null null КA34 Ялта
B005 Киев CA15 Киев

Пример 7. Полное внешнее соединение.

SELECT b.*, p.*

FROM Отделение1 b FULL JOIN Объекты_Недвижимости1 p ON

b.bcity = p.pcity;

Таблица 10 - Результат выполнения запроса

branchNo bcity propertyNo pcity
B001 Харьков PG4 Харьков
B005 Киев CA15 Киев
B003 Севастополь null null
null null КA34 Ялта

Пример 8. Запрос с использованием ключевого слова EXISTS.

SELECT staffNo, fName, lName, position

FROM Персонал s

WHERE EXISTS

(SELECT *

FROM Отделение b

WHERE s.branchNo = b.branchNo AND city = 'Харьков');

Таблица 11 - Результат выполнения запроса

staffNo fName lName position
SKh1 Иван Перов руководитель
SKh2 Анна Петренко консультант
SKh3 Ольга Петренко консультант

Пример 9. Использование операции UNION (объединение).

(SELECT city или (SELECT *

FROM Отделение FROM Отделение

WHERE city IS NOT NULL ) WHERE city IS NOT NULL )

UNIONUNIONCORRESPONDING BY city

(SELECT city (SELECT *

FROM Объекты_Недвижимости FROM Объекты_Недвижимости

WHERE city IS NOT NULL); WHERE city IS NOT NULL);

Таблица 12 - Результат выполнения запроса

city
Харьков
Севастополь
Киев
Чугуев
Ялта

Пример 10. Использование операции INTERSECT (пересечение).

(SELECT city или(SELECT *

FROM Отделение)FROM Отделение)

INTERSECTINTERSECT CORRESPONDING BY city

(SELECT city (SELECT *

FROM Объекты_Недвижимости);FROM Объекты_Недвижимости);

Таблица 13 - Результат выполнения запроса

city
Харьков
Киев

Пример 11. Использование операции EXCEPT (разность).

(SELECT city или(SELECT *

FROM Отделение)FROM Отделение)

EXCEPTEXCEPT CORRESPONDING BY city

(SELECT city (SELECT *

FROM Объекты_Недвижимости); FROM Объекты_Недвижимости);

Таблица 14 - Результат выполнения запроса

city
Севастополь

 


Дата добавления: 2015-07-20; просмотров: 67 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
Общая характеристика оператора SELECT| Пояснительная записка

mybiblioteka.su - 2015-2024 год. (0.01 сек.)