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

LEFT JOIN - возвращает строки из левой таблицы(table_name1), даже если их нет в правой таблице (table_name2).

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

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

Note - Замечание: В некоторых базах данных LEFT JOIN имеет имя LEFT OUTER JOIN.

Пример SQL LEFT 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
LEFT 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

Комментарии

 
-2 #1 Nerses 2010-10-04 13:56 Please tell me how do you make in order to result table rows show one Hansen,
your result table have Two Hansen,
Цитировать
 
 
+9 #2 aquillaman 2010-10-17 17:43 Цитирую Nerses:
Please tell me how do you make in order to result table rows show one Hansen,
your result table have Two Hansen,

It's because of in second table "Orders" we have two orders with Hansen's P_Id (3)
Цитировать
 
 
+4 #3 aquillaman 2010-10-17 17:44 Цитирую aquillaman:
Цитирую Nerses:
Please tell me how do you make in order to result table rows show one Hansen,
your result table have Two Hansen,

It's because of in second table "Orders" we have two orders with Hansen's P_Id (3)

Hansen's P_Id = 1
Цитировать
 
 
+11 #4 INet 2011-02-25 14:50 Отлично ! наглядно понятно! Цитировать
 
 
+3 #5 skinny 2011-03-19 19:19 да хорошо всё расписано и наглядно и понятно!!!! Цитировать
 
 
+4 #6 Krot 2011-03-31 20:01 Благодарю. До конца просветление ещё не пришло, но я работаю над этим)) Цитировать
 
 
+1 #7 Member 2011-03-31 22:52 Спасибо за хороший пример. Не могли бы вы пояснить как построить запрос что бы результат был объединен по строкам и подсчитать количество заказов. Т.е. что бы результат имел вид со столбцами LastName,FirstN ame, count(order):
Hansen Ola 2
Pettersen Kari 2
Svendson Tove null
Цитировать
 
 
+1 #8 Alex-x 2011-04-29 11:43 #7 Member 2011-03-31 22:52
Count Справа в списке
Цитировать
 
 
0 #9 Allexxisss 2012-02-28 15:30 COUNT() Цитировать
 

Авторизация

Nice Ajax Poll

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

Статистика



Реклама