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

SQL JOIN - используются для запроса данных из двух или нескольких таблиц связанных между собой ключами.


Ключом является столбец (или комбинация столбцов) с уникальным значением для каждой строки. Каждое значение первичного ключа должно быть уникальным в пределах таблицы. Цель состоит в том, чтобы связать данные всех таблиц вместе не повторяя все данные в каждой таблице.

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

P_IdLastNameFirstNameAddressCity
1 Hansen Ola Timoteivn 10 Sandnes
2 Svendson Tove Borgvn 23 Sandnes
3 Pettersen Kari Storgt 20 Stavanger

Заметим, что столбец "P_Id" является первичным ключом в таблицы "Persons". Это означает - что никакие две строки могут иметь одинаковый "P_Id".

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

O_IdOrderNoP_Id
1 77895 3
2 44678 3
3 22456 1
4 24562 1
5 34764 15

Заметим, что столбец "O_Id" является первичным ключом в таблицы "Orders" и что колонка "P_Id" относится к колонки  "P_Id" в таблице "Persons".

Отметим, что связь между таблицами обеспечивается с помощью колонки "P_Id".


Различные SQL JOINs

Прежде чем приводить примеры, мы перечислим типы JOIN доступные к использованию и различия между ними.

  • JOIN: Возвращает строки, когда есть хотя бы одно совпадение в обеих таблицах.
  • LEFT JOIN: Возвращает строки из левой таблицы, даже если их нет правой таблице.
  • RIGHT JOIN: Возвращает строки из правой таблицы, даже если их нет левой таблице.
  • FULL JOIN: Возвращает строки, когда есть хоть одно совпадение в любой из таблиц.

Комментарии

 
+9 #1 Pablo 2010-04-22 21:01 Я конечно извиняюсь, но разве во второй таблице первичным ключем являеться P_id? А не O_Id.
И что за выражение такое мастера Йоды "Это означает - что никакие две строки могут иметь одинаковый "P_Id"."
Может так лудче "Это означает - что "P_Id" всегда уникальный.
И ошибки является первичным ключом в таблицЫ "Persons".

В целом очень полезный ресурс!
Цитировать
 
 
+12 #2 ageent 2010-04-22 21:29 Pablo, спасибо поправил. Цитировать
 
 
0 #3 Игорь 2010-08-30 10:05 а где запрос? Цитировать
 
 
+1 #4 Саня 2010-10-11 10:33 Ну смысл страницы?? Даже примера исходного кода нету! Цитировать
 
 
-3 #5 Шелест Константин 2010-10-29 19:55 Цитирую Саня:
Ну смысл страницы?? Даже примера исходного кода нету!


Пример: получить значение OrderNo для персоны Hansen.

SELECT LastName, FirstName, OrderNo
FROM Persons
INNER JOIN Orders ON Persons.P_id = Orders.P_id
WHERE LastName = 'Hansen'

Если не ошибаюсь, то должно получится. Если ошибся, исправьте. Я пока учусь, еще не (запаяный) админ, что б в голове прокомпилироват ь без ошибок.
Цитировать
 
 
-1 #6 Сцуко 2010-12-16 23:06 Цитирую Саня:
Ну смысл страницы?? Даже примера исходного кода нету!

А розділи в правій частині для, кого??? Ця стаття для ознайомлення, нубл()
Цитировать
 
 
-16 #7 нахуй 2010-12-22 20:57 нет, ну заебись статья!
это я и без вас знаю!
где блядь пример, уродцы?
Цитировать
 
 
+3 #8 ыф 2011-02-04 21:47 Цитирую на:
где блядь пример, уродцы?

тебе никто ничего не должен
Цитировать
 
 
0 #9 Guest 2011-05-13 02:14 Подскажите. Как написать конструкцию обратной Inner Join, т. е. вывести те поля который не совпадают??? Цитировать
 
 
-3 #10 SSV 2011-07-12 15:52 Цитирую нахуй:
нет, ну заебись статья!
это я и без вас знаю!
где блядь пример, уродцы?

ты - Пассивный *****… да-да, именно так с двух больших букв "Пэ"
Цитировать
 

Авторизация

Nice Ajax Poll

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

Статистика



Реклама