Във всяка истинска релационна база данни цялата информация се разпределя в отделни таблици. Много от таблиците имат фиксирани връзки в схемата помежду си. Въпреки това, с помощта на SQL заявки е напълно възможно да се свържат данните, които не са включени в схемата. Това се постига чрез завършване на операцията connect, която ви позволява да изграждате взаимоотношения между произволен брой таблици и да свързвате дори привидно разпръснати данни. В тази статия ще говорим конкретно за лявата външна връзка. Преди да пристъпим към описанието на този тип връзка, ще добавим някои таблици към базата данни.
Подготовка на необходимите таблици
Хора
id
) L_name
F_name
Middle_name
рожден ден
Борисовна
1
Иванова
Дарина 46
16072000
2
Пудин
Владислав
)
Николаевич
29011986
3
Евгений
Александър
Федорович
30041964
4
Annina
)
Любов
Павливна
Надежда (
120)
Павловна
14031992
6
Албертович 151) 7
Сухановски
Юрий
Андрийович
)
Юлия
25091976
Yuriivna
01102001
Недвижими имоти:
Realty
адрес
1
208) Архангелск, ул. Воронина, 7 кв. 6
2
Архангелск, ул. Северодвинск, 84 кв. 9 стаи 5
3
Архангелска област, Северодвинск, ул. Ленин, 134 кв. 85
4
Архангелска област, с. Новодвинск, ул. Пролетарская, 16 кв. 137
5
с. Архангелск, пл. Териохин, 89 кв. 13
Връзка хора - недвижими имоти:
Realty_peoples
id_peoples
id_realty
254)
тип
7
3
Обща обща собственост
обща съвместна собственост
3
5
Собственост
7
299)
1
имоти
5
4
)
Съвместна частична собственост
6
4
собственост Обща дял
Ляв присъединят (SQL) - Описание [331 ]
В лявата връзка има следния синтаксис:
Table_A НАЛЯВО УЧАСТВА table_B [{ON предикат} | ИЗПОЛЗВАНЕ spysok_stolbtsov {}]
и схематично както следва:
И този израз се превежда като "Избиране на всички, без изключение, линията на масата, а масата да донесе само съвпадение предиката он-лайн. Ако таблицата не намери чифт за редовете в таблица А, тогава попълнете получените стойности на NUL колоната. "
Често при извършване на ляв връзка сочи за използването използва само когато имената на колоните, които планират да се свържете съвпадат.
Ляв присъединят - примери за
SELECT Peoples *, Realty_peoples.id_realty, Realty_peoples.type ОТ Peoples НАЛЯВО JOIN Realty_peoples ON Peoples.id = Realty_peoples.id_peoples.
и получават следните резултати:
Zapros1
ID стойност
L_name
F_name
Middle_name
Рождена
id_realty
тип
(от 381)
1
Иванова
Дариа (391 )
)
2
Pugin
Владислав
М.
29011986
3
Evga Девет
Александър
Федорович
30041964
5
462) Собственост
4
Анна
Любов
31121989
6
14031992
4
Герасимовски
Олег
Албертович
29011985
4
7
552)
Сухановски
Юрий
Андрийович
25091976
)
Юрий
Андрийович
25091976
)
Обща собственост
8
Сухановская
613)
Юлия
01102001
3
Обща обща собственост
Както виждаме, Иванова Даря, Пугина Владислав и Анина Любова нямат регистрирани права на недвижими имоти. И какво ще получим като използваме Inner join връзка? Както знаете, това изключва несъответстващи линии, така че трима души в нашата окончателна извадка просто отпаднаха:
Query1
id
L_name
F_name
666) 3
Евгений
Александър
Федорович
)
30041964
5
имоти
5
Павловна
14031992
712)
4
Съвместен частен имот
6
Герасимовски
29011985
Съвместна частична собственост
7
764)
25091976
)
7
Сухановски
Yuriy
Andriyovich
25091976
3
800)
Обща собственост
8
Сухановская
Юлия
01102001
Обща обща собственост
Изглежда, че вторият вариант съответства по еднакъв начин на условията на нашата задача. Въпреки това, ако продължим да добавяме друга таблица, тогава три от резултата ще изчезнат безвъзвратно. Следователно, на практика, когато се комбинират много таблици, левите и десните съединения са много по-често използвани от Inner join.
Продължете да виждате примери от ляво присъединяване към sql. Прикрепете таблица с адресите на нашите обектиИмот:.
SELECT Peoples *, Realty_peoples.id_realty, Realty_peoples.type, Realty.address ОТ Peoples НАЛЯВО JOIN Realty_peoples ON Peoples.id = Realty_peoples.id_peoples НАЛЯВО JOIN Realty ON Realty.id = Realty_peoples.id_realty (836 )
Сега ние получаваме не само от вида на закона, но също така се занимава свойства:
Zapros1
Идентификационният номер
продукти
L_name
F_name
Middle_name
Рождена
(862 )
id_realty
тип
адрес
1
Ivanov
Дариа
Б.
16072000
)
2
Pugin
Владислав
N.
29011986
3
(942 )
Evhenyn
Александър
F.
30041964
5
на имота
г. Архангелск, пл. Териохин, 89 кв. 97
Любов
Анин
983) P.
31121989
(
стр
14031992
4
собственост Обща дял
(1029 )
Архангелска област, Новодвинск, ул. Пролетарская, 16 кв. 137
6
Gerasimovka
(1.041) (1.042) (1.043) Олег
(1.046)
Албертович
29011985
Архангелска област, гр. Новодвинск, ул. Пролетарская, 16 кв. 1076
7
Сухановски
Юрий
1079)
25091976
3
Обща обща собственост
Архангелска област, Северодвинск, ул. Ленин, 134 кв. Сухановски
Юрий
1111) Андреевич
25091976
1
имоти
)
Архангелск, ул. Воронина, 7 кв. 6
8
Сухановская
Юлия
1143) Yuriivna
01102001
3
Общ имот
Архангелска област, Северодвинск, ул. Ленин, 134 кв. 85
Ляво присъединяване - типични грешки при използване: неправилно подреждане на таблици
Ако поставим таблиците в заявката на места и ще започнем с „От реалност се присъедини към народите“, няма да загубим никакви недвижими имоти, които няма да кажем за хората.
Ляво присъединяване - типични грешки при използването: правилността на заявката, когато са зададени условията за избор
FROM PEOPLE LEFT JOIN Realty_peoples ON Peoples.id = Realty_peoples.id_peoples;
Да предположим, че искаме да изясним заявката и да не показваме данните, когато видът на закона е „Собственост“. Ако просто добавим, използвайки лявото свързване sql, следващото условие:
Къде е тип & lt; & gt; "Собственост"
тогава ще загубим данни за хора, които нямат никакви недвижими имоти, защото празната Null стойност не се сравнява както следва:
Query1
id
Герасимовская
14031992
4
1233)
Частична собственост
6
Герасимовски
Олег
29011985
4
Имоти
7
Сухановски
Юрий
1278)
25091976
3
Обща обща собственост
(1 294) 8
Сухановская
Юлия
Юрийна
За да се предотврати появата на грешки поради тази причина, най-добре е да попитате условието за избор незабавно при свързването. Предлагаме да разгледаме следното от левия пример за свързване с sql.
SELECT Peoples. *, Realty_peoples.id_realty, Realty_peoples.type ВЪВ ВРЪЗКА С НАСЛЕДНИ ЛИЦЕ Realty_peoples ON (Peoples.id = Realty_peoples.id_peoples И въведете & lt; & gt; "Свойство")
Резултатът ще бъде следното:
Query1
id
L_name
F_name
рожден ден
id_realty
тип
1
Иванов
Дарина
) Borisovna
16072000
) 2
Пугин
Владислав
Николаевич
29011986
Евгений
Федорович
30041964
4
Анна
любов
1452)
Павловна
31121989
1468)
5
Герасимовская
Надия
Павловна
14031992
4
Олег
Герасимовски 1510) Albertovich
29011985
4
Съвместна частична собственост
Андрийович
1540)
25091976
3
Обща собственост
8
) 01102001
(15 74) 3
Обща обща собственост
По този начин, чрез изпълнение на прост пример за ляво присъединяване на sql, имаме списък на всички хора, които изваждат допълнителната, от които недвижими имоти в частична /обща собственост.