V vsaki pravi relacijski bazi podatkov so vse informacije razdeljene v ločene tabele. Mnoge tabele imajo med seboj fiksne povezave v shemi. Vendar pa je s pomočjo SQL poizvedb mogoče povsem povezati podatke, ki niso vključeni v shemo. To se doseže z dokončanjem povezave za operacijo povezovanja, ki vam omogoča, da zgradite odnose med poljubnim številom tabel in povežete celo na videz razpršene podatke. V tem članku bomo govorili posebej o levi zunanji povezavi. Preden nadaljujete z opisom te vrste povezave, bomo v bazo podatkov dodali nekaj tabel.
Priprava zahtevanih tabel
Ljudje
id
) L_name
F_name
Middle_name
Rojstni dan
Borisovna
1
Ivanova
Darina 46
16072000
2
Pudin
Vladislav
)
Nikolayevich
29011986
3
Eugenein
Alexander
Fedorovich
30041964
4
Annina
)
Ljubezen
Pavlivna
Nadežda (
120)
Pavlovna
14031992
6
Albertovič 151) 7
Sukhanovski
Jurij
Andriyovich
)
Julia
25091976
Yuriivna
01102001
Nepremičnine:
Realty
)
naslov
1
208) Arkhangelsk, st. Voronina, 7 kv. 6
2
Arkhangelsk, st. Severodvinsk, 84 m² 9 sob 5
3
Arhangelska regija, Severodvinsk, vul. Lenin, 134 m2 85
4
Regija Arkhangelsk, Novodvinsk r., St. Proletarskaya, 16 sq. M. 137
5
r. Arkhangelsk, pl. Teriokhin, 89 m2. 13
Povezava ljudje - nekretnine:
Realty_peoples
id_peoples
id_realty 254)
type
7
3
Splošna skupna last
Splošno skupno last
3
5
Lastništvo
7
299)
1
nepremičnine
5
4
)
Skupna delna lastnina
Levo združevanje (Sql) - opis
]
Tabela_ LEFT JOIN table_B [{ON predikat} | {USING list_stolbs}]
In izgleda shematično:
Najpogosteje, ko se izvrši leva povezava, se ON ONING uporablja samo, če so imena stolpcev, za katera je načrtovana povezava, sovpadala.
Levi pridruži - primeri uporabe
SELECT Peoples. *, Realty_peoples.id_realty, Realty_peoples.type OD LJUDI LEFT JOIN Realty_peoples ON
In dobimo naslednji rezultat:
Query1
id
L_name
F_name
Middle_name
Rojstni dan
id_realty
376)
tip
1
Ivanov
Darina
)
)
2
Pugin
Vladislav
Nikolayevich
29011986
Evga Devet
Alexander
Fedorovich
30041964
5
462) Lastništvo
4
Annina
Ljubezen
31121989
6
14031992
4
Gerasimovsky
Oleg
Albertovich
)
29011985
4
Skupna delna lastnina
7
552)
Sukhanovsky
Yuriy
Andriyovich
25091976
)
Yuriy
Andriyovich
25091976
)
Splošna skupna lastnina
8
Sukhanovskaya
613)
Julia
01102001
3
Splošna skupna lastnina
Kot vidimo, Ivanova Darija, Pugina Vladislav in Annina Lyubov nimajo registriranih pravic do nepremičnin. In kaj bi dobili s povezavo Inner join? Kot veste, izključuje neustrezne vrstice, zato so trije ljudje v našem končnem vzorcu preprosto izpadli:
Query1
id
L_name
F_name
666) 3
Eugenein
Alexander
Fedorovich
)
30041964
5
nepremičnine
5
Pavlovna
14031992
712)
4
Skupna zasebna lastnina
6
Gerasimovski
29011985
Skupno delno lastništvo
7
764)
25091976
)
7
Sukhanovsky
Yuriy
Andriyovich
25091976
3
800)
Splošna skupna lastnina
8
Sukhanovska
01102001
Splošna skupna lastnina
Zdi se, da druga možnost enako izpolnjuje pogoje naše naloge. Če pa še dodamo še eno tabelo, bodo trije rezultati nepovratno izginili. Zato je v praksi, ko kombiniramo veliko tabel, levo in desno spojino veliko pogosteje uporabljeno kot Inner join.
Še naprej si oglejte primere iz levega pridruženega sql. Priložite tabelo z naslovi naših objektovNepremičnine:.
SELECT Peoples *, Realty_peoples.id_realty, Realty_peoples.type, Realty.address IZ Ljudske LEVO PRIDRUŽITE Realty_peoples NA Peoples.id = Realty_peoples.id_peoples LEFT JOIN Realty NA Realty.id = Realty_peoples.id_realty (836 )
Zdaj smo dobili ne le prave vrste, ampak obravnava tudi lastnosti:
Zapros1
id vrednost
L_name
F_name
Middle_name
rojstva
(862 )
id_realty
tipa
naslov
1
Ivanova
Darja
B.
16.072.000
(894 )
2
Pugin
Vladislav
N.
29.011.986
3
(942 )
Evhenyn
Alexander
, F.
30041964
5
nepremičnine
d. Arkhangelsk, t. Teriokhin, 89 m2. 13
4
ANNINO
Ljubezen
P.
31.121.989
5
Herasymovskaya
Hope
, P.
14031992
, 4
lastništvo Skupni delež
(1029 )
Arkhangelsk regijo, str. Novodvynsk str. Proletarskaya, 16 sq. M. 137
6
Gerasimovka
Oleg
Albertovich
29011985
Regija Arkhangelsk, mesto Novodvinsk, ul. Proletarskaya, 16 sq. M. 1076
7
Sukhanovsky
Yuriy
1079)
25091976
3
Splošne skupne nepremičnine
Arkhangelska regija, Severodvinsk, vul. Lenin, 134 m2 Sukhanovski
Jurij
1111) Andreevich
25091976
1
nepremičnine
)
Arkhangelsk, st. Voronina, 7 kv. 6
8
Sukhanovskaya
Julia
1143) Yuriivna
01102001
3
Arkhangelsk regija, Severodvinsk, vul. Lenin, 134 m2 85
Levi priključek - tipične napake pri uporabi: napačna naročanje tabel
Če postavimo tabele v poizvedbo na kraje, in začnemo z "Od Realty se pridruži ljudstvom", ne bomo izgubili nobenih nepremičnin, ki jih ne bomo povedali o ljudeh.
Levo združevanje - tipične napake pri uporabi: pravilnost poizvedbe pri nastavitvi izbirnih pogojev
FROM PEOPLE LEFT JOIN Realty_peoples ON Peoples.id = Realty_peoples.id_peoples;
Recimo, da želimo pojasniti poizvedbo in ne prikazati podatkov, kjer je vrsta prava »lastnost«. Če preprosto dodamo levo povezavo sql, sledi naslednji pogoj:
Kje je tip & lt; & gt; "Lastnost"
potem bomo izgubili podatke o ljudeh, ki nimajo nepremičnin, ker se prazna vrednost Null ne primerja, kot sledi:
Query1
id
F_name
srednji_
)
Gerasimovska
Hope
P.
14.031.992
4
lastništvo Skupni delež
6
Gerasimovka
, Oleg
Albertovich
29.011.985
4
Skupno delež lastnost
7
Suhanovskyy
George
A.
25.091.976
3
Celotna skupno lastništvo
(1 294) 8
Suhanovskaya
Julija
Y.
(1309 )
01102001
3
Total skupno lastništvo
da bi preprečili napake, da so razlog, da je najbolje, da se posvetujte pogoj izbire takoj na povezavi. Predlagamo, da razmislimo o naslednjem iz levega primera pridružite sql.
Izbira ljudska *, Realty_peoples.id_realty, Realty_peoples.type IZ ljudskim LEVO JOIN Realty_peoples O (Peoples.id = Realty_peoples.id_peoples IN vrsta & lt; & gt; "lastnina").
Posledica bo kot sledi:
Zapros1
iD vrednost
L_name
F_name (1339
rojstni dan
id_realty
type
1
Ivanov
Darin
(1370 ) B.
16.072.000
(1386 ) 2
Pugin
Vladyslav
N.
29.011.986
Eugenein
30041964
)
4
ljubezen
1452)
Pavlovna
31121989
1468)
5
Gerasimovskaya
Nadiya
Pavlovna
)
14031992
4
Oleg
Gerasimovski 1510) Albertovich
29011985
4
Skupna delna lastnina
Andriyovich
1540)
25091976
3
Splošna skupna last
8
) 01102001
(15 74) 3
Splošna skupna lastnina
Tako smo s preprostim primerom levega pridruženega sql-a dobili seznam vseh ljudi, ki so predstavili še enega, od tega nepremičnine v delno /skupno lastništvo.