Читайте также: |
|
Пример 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 | | | Пояснительная записка |