V každej skutočnej relačnej databáze sú všetky informácie distribuované v samostatných tabuľkách. Mnohé z tabuliek majú medzi sebou pevné odkazy v schéme. Pomocou dotazov pre šablóny však je celkom možné prepojiť údaje, ktoré nie sú zahrnuté do schémy. To sa dosiahne dokončením pripojenia pripojenia, ktoré vám umožní vytvoriť vzťahy medzi ľubovoľným počtom tabuliek a pripojiť aj zdanlivo rozptýlené dáta. V tomto článku budeme hovoriť konkrétne o ľavom vonkajšom pripojení. Predtým, než začneme popis tohto typu pripojenia, pridáme do databázy niekoľko tabuliek.
Príprava požadovaných tabuliek
, Peoples
hodnota id
(15 ) L_name
F_name
Middle_name
Dátum narodenia
Borisovna
1
Ivanova
46)
, 16072000
, 2
Pugin
Vladyslav
(61 )
, N.
, 29011986
3
Evhenyn
Alexander
F
, 30041964
4
Annina
(98 )
Láska
Pavlína
Nadežda
120)
Pavlovna
14031992
Albertovič 151) 7
Suhanovskyy
George
A.
(166
Julia
25091976
Yu
01102001
Nehnuteľnosť:
nehnuteľností
(193 )
1
208) Arkhangelsk, st. Voronina, 7 kv. 6
2
Arkhangelsk, st. Severodvinsk, 84 m2 9 izieb 5
3
Arkhangelsk, Severodvinsk, vul. Lenin, 134 m² 85
4
región Arkhangelsk, Novodvinsk r. Proletarskaya, 16 m2 137
5
р Arkhangelsk, pl. Teriokhin, 89 m2 13
U ľudí vzťahy - Typ nehnuteľnosti:
Realty_peoples
id_peoples
id_realty
,
,
, typ
7
3
Celkom spoločnom vlastníctve
Všeobecné spoločné vlastníctvo
3
, 5
objektu
7
1
Reality
5
4
(314 )
Spoločné čiastočné vlastníctvo
6
4
vlastníctvo spoločný podiel
, ľavý pripojiť (SQL) - opis [331 ]
Na ľavej pripojenie má nasledujúcu syntax:
Table_A ľavý REGISTRÁCIE table_B [{ON predikátu} | POUŽITIE spysok_stolbtsov {}]
,
, a schematicky takto:
a tento výraz prekladá ako "Vybrať všetko bez výnimky riadok tabuľky a tabuľka priviesť iba zodpovedajúce predikát on-line. Ak tabuľka nenájde pár pre riadky v tabuľke A, vyplňte výsledné hodnoty stĺpcov Null. "
, často pri vykonávaní ľavej pripojení ukazuje na využitie použiť len pri názvy stĺpcov, ktoré plánované pre pripojenie zhodujú.
Left pripojiť - príklady
SELECT * Peoples, Realty_peoples.id_realty, Realty_peoples.type FROM Peoples LEFT JOIN Realty_peoples ON Peoples.id = Realty_peoples.id_peoples ;.
a získať nasledujúce výsledky:
,
Zapros1
id hodnota
L_name
F_name
Middle_name
Dátum narodenia
id_realty
,
,
, typ
1
Ivanova
Darya (391 )
)
2
Pugin
Vladislav
M.
29011986
3
Evga Deväť
Alexander
, F
30041964
, 5
objektu
4
Annino
Láska
(477 )
, P.
31121989
(493 )
, 5
Herasymovskaya
nádeje
, P.
14031992
4
vlastníctvo spoločný podiel
6 (523 )
Gerasimovka
Oleg
Albertová
(537 )
29011985
4
vlastníctvo Spoločný podiel
7
Suhanovskyy
George
A.
25091976 (567 )
1
objektu
7
Suhanovskyy
George
A.
25091976
(598 ) 3
Celkový spoločný majetok
8
Suhanovskaya
,
Julia
Yu
01102001
3
Celkový spoločný majetok
Ako je možno vidieť v Ivanov Darya, Puhyna Vladislav Annino a milovať žiadne práva registrovaný majetok. Čo sme používali prepojenie vnútornej pripojiť? Ako viete, že vylučuje nesúhlasné linky, a traja ľudia z nášho konečnej vzorky proste spadol:
Zapros1
hodnota id
L_name
F_name
666) 3
Evhenyn
Alexander
, F
(681 )
30041964
, 5
objektu
,
,
,
5
,
Herasymovskaya
nádeje
, P.
14031992
,
,
4
vlastníctvo spoločný podiel
6
Gerasimovka
Oleg
Albertová
29011985 (7 39)
4
vlastníctvo spoločný podiel
7
25091976
)
1
objektu
7
Suhanovskyy
George
A.
25091976
3
Celkový spoločný majetok
8
Suhanovskaya
Julia
Yu
01102001
3
Celkový spoločný majetok
Zdá sa, že druhá možnosť stretnúť len náš problém. Ak však budeme pokračovať v pridávaní ďalšej tabuľky, potom tri z výsledkov budú nenávratne miznú. Preto v praxi sa pri kombinácii mnohých tabuliek používajú ľavé a pravé zlúčeniny oveľa bežnejšie než vnútorné spojenie.
Pokračovať v zobrazovaní príkladov z ľavého pripojenia sql. Priložte tabuľku s adresami našich objektovTyp nehnuteľnosti :.
SELECT * Peoples, Realty_peoples.id_realty, Realty_peoples.type, Realty.address FROM Peoples LEFT JOIN Realty_peoples ON Peoples.id = Realty_peoples.id_peoples LEFT JOIN Realty ON Realty.id = Realty_peoples.id_realty (836 )
Teraz dostaneme nielen správny druh, ale tiež rieši vlastnosti:
Zapros1
id hodnota
L_name
F_name
Middle_name
Dátum narodenia
(862 )
id_realty
typu
adries
1
Ivanova
Darya
B
16072000
(894 )
2
Pugin
Vladislav
, N.
29011986
3
(942 )
Evhenyn
Alexander
, F
30041964
, 5
objektu
, d. Arkhangelsk, pl. Terekhin, d. 89 metrov štvorcových. 13
4
Annino
Láska
, P.
31121989
, 5
,
Herasymovskaya
, Hope
, P.
14031992
4
,
vlastníctvo kmeňovú akciu
(1029 )
Arkhangelsk oblasť, s. Novodvynsk str. Proletárov, d. 16 metrov štvorcových. 137
6
Gerasimovka
Oleg
Albertová
29011985
4
,
vlastníctvo kmeňovú akciu
Arkhangelsk, Novodinsk, st. Proletarskaya, 16 m2 137
, 7
Suhanovskyy
George
, A.
25091976
, 3
Celkom spoločnom vlastníctve
región Arkhangelsk, Severodvinsk, vul. Lenin, 134 m² 85
, 7
Suhanovskyy
George
, A.
25091976
, 1
objektu
(1126 )
Arkhangelsk, st. Voronina, 7 kv. 6
, 8
Suhanovskaya
Julia
Y.
01102001
3
,
Total spoločnom vlastníctve
región Arkhangelsk, Severodvinsk, vul. Lenin, 134 m² 85
,
,
Left pripojiť - používať bežné chyby: Neplatné procedúra tabuľku
Ak sme sa presťahovali do tabuľky v dotaze miestach a začne s «Z ľava nehnuteľností pripojiť Peoples» nie je vlastnosť by sme stratili nemožno povedať o ľuďoch.
Left pripojiť - využívanie bežných chýb, správne dopytu pri stanovovaní podmienok Stanovenie
FROM Peoples LEFT JOIN Realty_peoples ON Peoples.id = Realty_peoples.id_peoples;
Predpokladajme, že chceme vysvetliť dotaz a nezobrazovať údaje, kde typ zákona je "Vlastnosť". Ak jednoducho pridáme pomocou ľavej spojenia sql nasledujúcu podmienku:
Kde typ & lt; & gt; "Vlastníctvo"
, môže dôjsť k strate dát na ľudí, ktorí nemajú majetok, keďže prázdny Null nie je v porovnaní takto:
Zapros1
ID hodnotu
L_name
F_name
Middle_name
(1198 ) narodenín
id_realty
typu
, 5
,
Gerasimovská
, Hope
, P.
14031992
, 4
vlastníctvo kmeňovú akciu
6
Gerasimovka
Oleg
Albertová
29011985
, 4
spoločný podiel vlastníctva
, 7
Suhanovskyy
George
, A.
25091976
3
Total spoločnom vlastníctve
(1 294) 8
Suhanovskaya
Julia
Y.
(1309 )
01102001
3
Total spoločnom vlastníctve
aby sa zabránilo chybám, že rozum, to je najlepšie sa opýtať Voľba stav ihneď po pripojení. Navrhujeme zvážiť nasledujúce zľava pripojí SQL príklad.
SELECT Peoples *, Realty_peoples.id_realty, Realty_peoples.type Z Peoples LEFT JOIN Realty_peoples ON (Peoples.id = Realty_peoples.id_peoples a typ & lt; & gt; "Property").
V dôsledku toho bude nasledujúcim spôsobom:
Zapros1
iD hodnota
L_name
F_name (1339 )
Middle_name
narodenín
id_realty
, typ
, 1
Ivanov
Darin
(1370 ) B.
16072000
(1386 ) 2
Pugin
Vladyslav
, N.
29011986
Eugenein
, Alexander
, F.
30041964
(1436 )
, 4
Annino
Láska
, P.
31121989
, 5
,
Herasymovskaya
, Hope
, P. (1483 )
14031992
, 4
, spoločný podiel ich Play Time
6
,
Gerasimovka
, Oleg
Albertová
29011985
4
,
vlastníctvo kmeňovú akciu
, 7
Suhanovskyy
George
, A.
25091976
3
Total spoločnom vlastníctve
8
Suhanovskaya
Julia
, Y.
(1570 ) 01102001
(15 74) 3
,
Total spoločnom vlastníctve
Tým, že po jednoduchej s ľavou spojiť sql príklad, máme zoznam všetkých ľudí, ktorí sa pohybujú ďalej v niektorých z nich nehnuteľností v čiastočné /spoločné vlastníctvo.