Главная SQL Full Join
E-mail Печать PDF

FULL JOIN - возвращает строки, когда есть хоть одно совпадение в любой из таблиц.

Синтаксис SQL FULL JOIN

1
2
3
4
SELECT column_name(s)
FROM table_name1
FULL JOIN table_name2
ON table_name1.column_name=table_name2.column_name

Пример SQL FULL JOIN

Есть таблица "Persons":

P_Id LastName FirstName Address City
1 Hansen Ola Timoteivn 10 Sandnes
2 Svendson Tove Borgvn 23 Sandnes
3 Pettersen Kari Storgt 20 Stavanger

Есть таблица "Orders":

O_Id OrderNo P_Id
1 77895 3
2 44678 3
3 22456 1
4 24562 1
5 34764 15

Теперь мы хотим получить список всех людей и заказов.

Для этого используем такой запрос:

1
2
3
4
5
SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
FROM Persons
FULL JOIN Orders
ON Persons.P_Id=Orders.P_Id
ORDER BY Persons.LastName

Результат запроса:

LastName FirstName OrderNo
Hansen Ola 22456
Hansen Ola 24562
Pettersen Kari 77895
Pettersen Kari 44678
Svendson Tove
34764

Комментарии

 
+3 #1 Andrew 2010-08-11 09:12 SELECT column_name(s)
FROM table_name1
FULL JOIN table_name2
ON table_name1.column_name=table_name2.column_name

- это все понятно! а если мне нужно выбирать не из 2х таблиц, а из 3,4,5,6 … какой синтаксис, как писать from…!?
Цитировать
 
 
+1 #2 German 2010-10-12 11:43 Примерно так, думаю INNER JOIN и FULL JOIN не особо отличаються по синтаксису, у меня по крайней мере работает
SELECT column_name(s)
FROM table_name1
FULL JOIN table_name2
ON table_name1.column_name1=table_name2.column_name1
FULL JOIN table_name3
ON table_name1.column_name2=table_name3.column_name2

вообщем 4 таблицы в одном запросе причем вызов идет по разным колонкам и вообще связкой из 2 и 3 таблицы типа

FULL JOIN table_name2
ON table_name2.column_name=table_name3.column_name
Цитировать
 
 
0 #3 max 2011-05-12 15:26 А в чем принципиальное отличие от Cross Join ? Цитировать
 
 
0 #4 MOPO3OB 2011-06-20 10:50 Цитирую max:
А в чем принципиальное отличие от Cross Join ?


Cross Join возвращает все возможные сочетания каждой строки с каждой. В данном случае при использовании Cross Join, запрос вернул бы 3х5=15 строк
Цитировать
 

Авторизация

Nice Ajax Poll

Какое из моих расширений самое лучшее?

Статистика



Реклама