Cross Join
Оператор перекресного соединения (CROSS JOIN) соединяет две таблицы в одну. Порядок таблиц для оператора не важен поскольку оператор симетричен.
Пример 1.
SELECT
E.first_name, E.last_name, D.name
FROM
emp E, dept D;
E.first_name, E.last_name, D.name
FROM
emp E, dept D;
FIRST_NAME LAST_NAME NAME
------------------------ ------------------------- ---------------
Carmen Velasquez Finance
LaDoris Ngao Finance
Midori Nagayama Finance
Mark Quick-To-See Finance
Audry Ropeburn Finance
... ... ...
Vikram Palet Administration
Chad Newman Administration
Alexander Markarian Administration
Eddie Chang Administration
Radha Palet Administration
Bela Dancs Administration
Sylvie Schwartz Administration
------------------------ ------------------------- ---------------
Carmen Velasquez Finance
LaDoris Ngao Finance
Midori Nagayama Finance
Mark Quick-To-See Finance
Audry Ropeburn Finance
... ... ...
Vikram Palet Administration
Chad Newman Administration
Alexander Markarian Administration
Eddie Chang Administration
Radha Palet Administration
Bela Dancs Administration
Sylvie Schwartz Administration
Комментарий:
Результатом является 300 записей (25 записей с таблицы EMP умножить на 15 записей с таблицы DEPT ). Мы выбрали с таблицы EMP имена и фамилии работников, а с таблицы DEPT, названия департаментов и соединили эти две таблицы таким образом, что каждое название департамента приписано к кажному работнику.
Inner Join
Оператор внутренного соединения INNER JOIN. Порядок таблиц для оператора не важен, потому что является симетричным. Каждая строка первой таблицы сопоставляется с каждой строкой второй таблицы, в результате для получения соединенной таблицы проверяется условие соединения. Если условие истинно, в таблицу результатов добавляется соответствующая строка.
Пример 2.
SELECT
emp.first_name, emp.last_name, dept.name
FROM
emp, dept
WHERE
emp.dept_id = dept.id;
emp.first_name, emp.last_name, dept.name
FROM
emp, dept
WHERE
emp.dept_id = dept.id;
FIRST_NAME LAST_NAME NAME
------------------------ ------------------------ ---------------
Carmen Velasquez Administration
LaDoris Ngao Operations
Midori Nagayama Sales
Mark Quick-To-See Finance
Audry Ropeburn Administration
Molly Urguhart Operations
Roberta Menchu Operations
Ben Biri Operations
Antoinette Catchpole Operations
Marta Havel Operations
Colin Magee Sales
Henry Giljum Sales
Yasmin Sedeghi Sales
Mai Nguyen Sales
Andre Dumas Sales
Elena Maduro Operations
George Smith Operations
Akira Nozaki Operations
Vikram Palet Operations
Chad Newman Operations
Alexander Markarian Operations
Eddie Chang Operations
Radha Palet Sales
Bela Dancs Operations
Sylvie Schwartz Operations
------------------------ ------------------------ ---------------
Carmen Velasquez Administration
LaDoris Ngao Operations
Midori Nagayama Sales
Mark Quick-To-See Finance
Audry Ropeburn Administration
Molly Urguhart Operations
Roberta Menchu Operations
Ben Biri Operations
Antoinette Catchpole Operations
Marta Havel Operations
Colin Magee Sales
Henry Giljum Sales
Yasmin Sedeghi Sales
Mai Nguyen Sales
Andre Dumas Sales
Elena Maduro Operations
George Smith Operations
Akira Nozaki Operations
Vikram Palet Operations
Chad Newman Operations
Alexander Markarian Operations
Eddie Chang Operations
Radha Palet Sales
Bela Dancs Operations
Sylvie Schwartz Operations
Комментарий:
Соединяем таблицы по определенном условии (обычно первичный ключ в одной таблице с внешним ключем во второй).
Theta Join
В этом типе соединения применяется условие на входе отношения, а затем используется выбраные строки, которые будут объединены и включены в вывод. Этот тип соединения довольно редко используется на практике.
Пример 3
SELECT
E.title, J.name, E.first_name, E.last_name, J.salary_min||' -- '||J.salary_max „Interval”, E.salary
FROM
emp E, job J
WHERE
E.salary BETWEEN J.salary_min AND J.salary_max
ORDER BY
E.last_name;
E.title, J.name, E.first_name, E.last_name, J.salary_min||' -- '||J.salary_max „Interval”, E.salary
FROM
emp E, job J
WHERE
E.salary BETWEEN J.salary_min AND J.salary_max
ORDER BY
E.last_name;
TITLE NAME FIRST_NAME LAST_NAME Interval SALARY
----------------- ------------------ ---------- --------- -----------------
Warehouse Manager Stock Clerk Ben Biri 700 -- 1200 1100
Warehouse Manager Warehouse Manager Ben Biri 1000 -- 1500 1100
Warehouse Manager Sales Representative Antoinette Catchpole 1200 -- 1400 1300
Warehouse Manager Warehouse Manager Antoinette Catchpole 1000 -- 1500 1300
Stock Clerk Stock Clerk Eddie Chang 700 -- 1200 800
Stock Clerk Stock Clerk Bela Dancs 700 -- 1200 860
SalesRepresentative Warehouse Manager Andre Dumas 1000 -- 1500 1450
SalesRepresentative Warehouse Manager Henry Giljum 1000 -- 1500 1490
Warehouse Manager Sales Representative Marta Havel 1200 -- 1400 1307
Warehouse Manager Warehouse Manager Marta Havel 1000 -- 1500 1307
Stock Clerk Sales Representative Elena Maduro 1200 -- 1400 1400
Stock Clerk Warehouse Manager Elena Maduro 1000 -- 1500 1400
SalesRepresentative Sales Representative Colin Magee 1200 -- 1400 1400
SalesRepresentative Warehouse Manager Colin Magee 1000 -- 1500 1400
Stock Clerk Stock Clerk Alexander Markarian 700 -- 1200 850
Warehouse Manager Sales Representative Roberta Menchu 1200 -- 1400 1250
Warehouse Manager Warehouse Manager Roberta Menchu 1000 -- 1500 1250
VP, Sales Sales Representative Midori Nagayama 1200 -- 1400 1400
VP, Sales Warehouse Manager Midori Nagayama 1000 -- 1500 1400
Stock Clerk Stock Clerk Chad Newman 700 -- 1200 750
VP, Operations Warehouse Manager LaDoris Ngao 1000 -- 1500 1450
Stock Clerk Stock Clerk Akira Nozaki 700 -- 1200 1200
Stock Clerk Warehouse Manager Akira Nozaki 1000 -- 1500 1200
Stock Clerk Sales Representative Akira Nozaki 1200 -- 1400 1200
Stock Clerk Stock Clerk Vikram Palet 700 -- 1200 795
Stock Clerk Stock Clerk Radha Palet 700 -- 1200 795
VP, Finance Warehouse Manager Mark Quick-To-See 1000 -- 1500 1450
Stock Clerk Stock Clerk Sylvie Schwartz 700 -- 1200 1100
Stock Clerk Warehouse Manager Sylvie Schwartz 1000 -- 1500 1100
Stock Clerk Stock Clerk George Smith 700 -- 1200 940
Warehouse Manager Stock Clerk Molly Urguhart 700 -- 1200 1200
Warehouse Manager Sales Representative Molly Urguhart 1200 -- 1400 1200
Warehouse Manager Warehouse Manager Molly Urguhart 1000 -- 1500 1200
President President Carmen Velasquez 2000 -- 4000 2500
----------------- ------------------ ---------- --------- -----------------
Warehouse Manager Stock Clerk Ben Biri 700 -- 1200 1100
Warehouse Manager Warehouse Manager Ben Biri 1000 -- 1500 1100
Warehouse Manager Sales Representative Antoinette Catchpole 1200 -- 1400 1300
Warehouse Manager Warehouse Manager Antoinette Catchpole 1000 -- 1500 1300
Stock Clerk Stock Clerk Eddie Chang 700 -- 1200 800
Stock Clerk Stock Clerk Bela Dancs 700 -- 1200 860
SalesRepresentative Warehouse Manager Andre Dumas 1000 -- 1500 1450
SalesRepresentative Warehouse Manager Henry Giljum 1000 -- 1500 1490
Warehouse Manager Sales Representative Marta Havel 1200 -- 1400 1307
Warehouse Manager Warehouse Manager Marta Havel 1000 -- 1500 1307
Stock Clerk Sales Representative Elena Maduro 1200 -- 1400 1400
Stock Clerk Warehouse Manager Elena Maduro 1000 -- 1500 1400
SalesRepresentative Sales Representative Colin Magee 1200 -- 1400 1400
SalesRepresentative Warehouse Manager Colin Magee 1000 -- 1500 1400
Stock Clerk Stock Clerk Alexander Markarian 700 -- 1200 850
Warehouse Manager Sales Representative Roberta Menchu 1200 -- 1400 1250
Warehouse Manager Warehouse Manager Roberta Menchu 1000 -- 1500 1250
VP, Sales Sales Representative Midori Nagayama 1200 -- 1400 1400
VP, Sales Warehouse Manager Midori Nagayama 1000 -- 1500 1400
Stock Clerk Stock Clerk Chad Newman 700 -- 1200 750
VP, Operations Warehouse Manager LaDoris Ngao 1000 -- 1500 1450
Stock Clerk Stock Clerk Akira Nozaki 700 -- 1200 1200
Stock Clerk Warehouse Manager Akira Nozaki 1000 -- 1500 1200
Stock Clerk Sales Representative Akira Nozaki 1200 -- 1400 1200
Stock Clerk Stock Clerk Vikram Palet 700 -- 1200 795
Stock Clerk Stock Clerk Radha Palet 700 -- 1200 795
VP, Finance Warehouse Manager Mark Quick-To-See 1000 -- 1500 1450
Stock Clerk Stock Clerk Sylvie Schwartz 700 -- 1200 1100
Stock Clerk Warehouse Manager Sylvie Schwartz 1000 -- 1500 1100
Stock Clerk Stock Clerk George Smith 700 -- 1200 940
Warehouse Manager Stock Clerk Molly Urguhart 700 -- 1200 1200
Warehouse Manager Sales Representative Molly Urguhart 1200 -- 1400 1200
Warehouse Manager Warehouse Manager Molly Urguhart 1000 -- 1500 1200
President President Carmen Velasquez 2000 -- 4000 2500
Комментарий:
В примере отображается список сотрудников, их должности и заработная плата. Зароботная плата выбрана в результате ограниченния из таблицы JOB.
Self Join
Пример 4.
SELECT
E1.last_name, E1.title, E2.last_name, E2.title FROM
emp E1, emp E2 WHERE
E1.manager_id = E2.id;
E1.last_name, E1.title, E2.last_name, E2.title FROM
emp E1, emp E2 WHERE
E1.manager_id = E2.id;
LAST_NAME TITLE LAST_NAME TITLE
-------------- ------------------------ --------------------- ------------------
Ngao VP, Operations Velasquez President
Nagayama VP, Sales Velasquez President
Quick-To-See VP, Finance Velasquez President
Ropeburn VP, Administration Velasquez President
Urguhart Warehouse Manager Ngao VP, Operations
Menchu Warehouse Manager Ngao VP, Operations
Biri Warehouse Manager Ngao VP, Operations
Catchpole Warehouse Manager Ngao VP, Operations
Havel Warehouse Manager Ngao VP, Operations
Magee Sales Representative Nagayama VP, Sales
Giljum Sales Representative Nagayama VP, Sales
Sedeghi Sales Representative Nagayama VP, Sales
Nguyen Sales Representative Nagayama VP, Sales
Dumas Sales Representative Nagayama VP, Sales
Maduro Stock Clerk Urguhart Warehouse Manager
Smith Stock Clerk Urguhart Warehouse Manager
Nozaki Stock Clerk Menchu Warehouse Manager
Palet Stock Clerk Menchu Warehouse Manager
Newman Stock Clerk Biri Warehouse Manager
Markarian Stock Clerk Biri Warehouse Manager
Chang Stock Clerk Catchpole Warehouse Manager
Palet Stock Clerk Catchpole Warehouse Manager
Dancs Stock Clerk Havel Warehouse Manager
Schwartz Stock Clerk Havel Warehouse Manager
-------------- ------------------------ --------------------- ------------------
Ngao VP, Operations Velasquez President
Nagayama VP, Sales Velasquez President
Quick-To-See VP, Finance Velasquez President
Ropeburn VP, Administration Velasquez President
Urguhart Warehouse Manager Ngao VP, Operations
Menchu Warehouse Manager Ngao VP, Operations
Biri Warehouse Manager Ngao VP, Operations
Catchpole Warehouse Manager Ngao VP, Operations
Havel Warehouse Manager Ngao VP, Operations
Magee Sales Representative Nagayama VP, Sales
Giljum Sales Representative Nagayama VP, Sales
Sedeghi Sales Representative Nagayama VP, Sales
Nguyen Sales Representative Nagayama VP, Sales
Dumas Sales Representative Nagayama VP, Sales
Maduro Stock Clerk Urguhart Warehouse Manager
Smith Stock Clerk Urguhart Warehouse Manager
Nozaki Stock Clerk Menchu Warehouse Manager
Palet Stock Clerk Menchu Warehouse Manager
Newman Stock Clerk Biri Warehouse Manager
Markarian Stock Clerk Biri Warehouse Manager
Chang Stock Clerk Catchpole Warehouse Manager
Palet Stock Clerk Catchpole Warehouse Manager
Dancs Stock Clerk Havel Warehouse Manager
Schwartz Stock Clerk Havel Warehouse Manager
В первом столбце показываем фамилию сотрудников, во втором должность на которой работает, в третем столбце фамилия начальника и в четвертому должность на которой работает. Обратите внимание, что, когда в предложении WHERE изменить условие E2.manager_id = E1.id, получим в результате другую сортировку данных. В первых двух столбцах будут данные начальства а в остальных двох данные работников.
Outer Joins
- FULL Outer Joins
- LEFT Outer Joins
- RIGHT Outer Joins
FULL Outer Joins
Полное внешнее соединение состоит из пересечения таблиц вместе. Проще говоря, этот тип соединения будет действовать как внутреннее соединение, но также возвращая все записи, которые имеют значение NULL для их внешних ключей.
Пример 5.
SELECT D.id, D.name, E.first_name, E.last_name
FROM dept D, emp E
WHERE D.id = E.dept_id
FROM dept D, emp E
WHERE D.id = E.dept_id
ID NAME FIRST_NAME LAST_NAME
---------- --------------------- ----------------- ---------------
10 Finance Mark Quick-To-See
31 Sales Midori Nagayama
31 Sales Colin Magee
32 Sales Henry Giljum
33 Sales Yasmin Sedeghi
34 Sales Mai Nguyen
34 Sales Radha Palet
35 Sales Andre Dumas
50 Administration Carmen Velasquez
50 Administration Audry Ropeburn
---------- --------------------- ----------------- ---------------
10 Finance Mark Quick-To-See
31 Sales Midori Nagayama
31 Sales Colin Magee
32 Sales Henry Giljum
33 Sales Yasmin Sedeghi
34 Sales Mai Nguyen
34 Sales Radha Palet
35 Sales Andre Dumas
50 Administration Carmen Velasquez
50 Administration Audry Ropeburn
Комментарий:
Ряды отношений, которые не имеют аналогов, удовлетворяющих условию вызова - не отображаются. В результате мы "теряем" информацию о роботниках которые не отнесены к конкретному отделу.
LEFT Outer Join
Левое внешнее соединение возвращает записи, которые пересекаются, наряду с записями с левой таблицы и не имеют каких-либо присвоеных записей из таблицы справа.
Пример 6.
SELECT D.id, D.name, E.first_name, E.last_name
FROM dept D, emp E
WHERE D.id(+) = E.dept_id
FROM dept D, emp E
WHERE D.id(+) = E.dept_id
ID NAME FIRST_NAME LAST_NAME
---------- ------------------ -------------------- -------------
10 Finance Mark Quick-To-See
31 Sales Midori Nagayama
31 Sales Colin Magee
32 Sales Henry Giljum
33 Sales Yasmin Sedeghi
34 Sales Mai Nguyen
34 Sales Radha Palet
35 Sales Andre Dumas
50 Administration Carmen Velasquez
50 Administration Audry Ropeburn
LaDoris Ngao
Molly Urguhart
Roberta Menchu
Elena Maduro
Akira Nozaki
Chad Newman
Eddie Chang
Sylvie Schwartz
Bela Dancs
Alexander Markarian
Vikram Palet
George Smith
Ben Biri
Antoinette Catchpole
Marta Havel
---------- ------------------ -------------------- -------------
10 Finance Mark Quick-To-See
31 Sales Midori Nagayama
31 Sales Colin Magee
32 Sales Henry Giljum
33 Sales Yasmin Sedeghi
34 Sales Mai Nguyen
34 Sales Radha Palet
35 Sales Andre Dumas
50 Administration Carmen Velasquez
50 Administration Audry Ropeburn
LaDoris Ngao
Molly Urguhart
Roberta Menchu
Elena Maduro
Akira Nozaki
Chad Newman
Eddie Chang
Sylvie Schwartz
Bela Dancs
Alexander Markarian
Vikram Palet
George Smith
Ben Biri
Antoinette Catchpole
Marta Havel
Комментарий:
В данном примере мы возвращаем все ряды отношений, которые удовлетворяют условие вызова и все остальные записи которые есть в таблице EMP.
RIGHT Outer Joins
Правое внешнее соединение по существу такое же, как левое, но с дополнением правой таблицы.Пример 7.
SELECT D.id, D.name, E.first_name, E.last_name
FROM dept D, emp E
WHERE D.id = E.dept_id(+)
ID NAME FIRST_NAME LAST_NAME
---------- --------------- -------------------- ----------------
10 Finance Mark Quick-To-See
31 Sales Midori Nagayama
31 Sales Colin Magee
32 Sales Henry Giljum
33 Sales Yasmin Sedeghi
34 Sales Mai Nguyen
34 Sales Radha Palet
35 Sales Andre Dumas
41 Operations
42 Operations
43 Operations
44 Operations
45 Operations
---------- --------------- -------------------- ----------------
10 Finance Mark Quick-To-See
31 Sales Midori Nagayama
31 Sales Colin Magee
32 Sales Henry Giljum
33 Sales Yasmin Sedeghi
34 Sales Mai Nguyen
34 Sales Radha Palet
35 Sales Andre Dumas
41 Operations
42 Operations
43 Operations
44 Operations
45 Operations
Комментарий:
В данном примере мы возвращаем все ряды отношений, которые удовлетворяют условие вызова и все остальные записи которые есть в таблице DEPT.
Комментариев нет :
Отправить комментарий