RačunalnikiProgramiranje

Levi pridruži (SQL) - zgled, podroben opis, uporaba napake

V vsakem realnem relacijske baze podatkov, vse informacije razdeljen na posebni tabeli. Veliko tabel so določene v sistem komunikacije s seboj. Vendar pa se s pomočjo SQL poizvedb, je povsem mogoče, da dajo povezavo med podatki, ki niso vgrajeni v krog. To se naredi z izvajanjem pridružijo povezavo, ki vam omogoča, da graditi odnos med poljubno število tabel, in celo povezati navidezno različen informacije.

Ta članek bo govoril predvsem o levi zunanji pridružijo. Preden nadaljujete z opisom te vrste povezavo, dodajte v nekaterih tabelah zbirke podatkov.

Priprava potrebnih tabel

Na primer, v naši bazi podatkov, se podatki o ljudeh in njihovih nepremičnin. Povzetek, ki temelji na treh mizah: Ljudska (ljudi), Realty (nepremičnine), Realty_peoples (tabela odnosi, ljudje, ki iz tega, kar lastnina pripada). Predpostavimo naslednje podatke, ki so shranjeni v tabelah ljudi:

Peoples

id

L_name

F_name

Middle_name

Rojstni dan

1

Ivanova

Daria

B.

2000/07/16

2

Pugin

Vladislav

Nikolajevič

1986/01/29

3

Evgenin

Alexander

Federovich

1964/04/30

4

Annina

ljubezen

P.

1989/12/31

5

Gerasimovsky

upam

P.

1992/03/14

6

Gerasimovsky

Oleg

Albertovich

1985/01/29

7

Sukhanovskaya

žirija

A.

1976/09/25

8.

Sukhanovskaya

Julia

Y.

2001/01/10

Nepremičnine:

Realty

id

naslov

1

Arkhangelsk, ul. Voronin, d. 7, kv.6

2

Arkhangelsk, ul. Severodvinskaya, d. 84, q. 9 BR. 5

3

Arkhangelsk regija, Severodvinsk, st. Lenin, d. 134, q. 85

4

Arkhangelsk regija, Novodvinsk, ul. Proletarshaya, d. 16, q. 137

5

Arkhangelsk, pl. Terekhina, d. 89, q. 13

ljudje odnosi - nepremičnine:

Realty_peoples

id_peoples

id_realty

tip

7

3

Skupaj skupno lastništvo

8.

3

Skupaj skupno lastništvo

3

5

nepremičnine

7

1

nepremičnine

5

4

Skupni deli

6

4

Skupni deli

Levo pridruži (SQL) - Opis

Leva spojina naslednjo sintakso:

Table_A LEVO PRIDRUŽITE table_B [{O predikatov} | {UPORABA spisok_ z tolbtsov}]

In shematično kot sledi:

In je ta izraz preveden kot "Izberi vse, brez izjeme, vrstica tabele A in tabele B za prikaz samo ujemajoče se vrstice predikata. Če je tabela najdete v tabeli niza za parov A, potem pa izpolnite nastale stolpce Null - vrednote ".

Najbolj pogosto, ko je zapustil povezava navedeno ON, z uporabo se uporablja samo, če so imena stolpcev, ki je načrtovana za vzpostavitev povezave enako.

Levi pridruži - primeri uporabe

S povezavo na levi strani lahko vidimo, vsi ljudje s seznama, če je ljudska last. Če želite to narediti v levi pridruži SQL primer poizvedbe:

SELECT Peoples. *, Realty_peoples.id_realty, Realty_peoples.type

IZ Peoples LEFT JOIN Realty_peoples NA Peoples.id = Realty_peoples.id_peoples;

Z naslednjimi rezultati:

Query1

id

L_name

F_name

Middle_name

Rojstni dan

id_realty

tip

1

Ivanova

Daria

B.

2000/07/16

2

Pugin

Vladislav

Nikolajevič

1986/01/29

3

Evgenin

Alexander

Federovich

1964/04/30

5

nepremičnine

4

Annina

ljubezen

P.

1989/12/31

5

Gerasimovsky

upam

P.

1992/03/14

4

Skupni deli

6

Gerasimovsky

Oleg

Albertovich

1985/01/29

4

Skupni deli

7

Sukhanovskaya

žirija

A.

1976/09/25

1

nepremičnine

7

Sukhanovskaya

žirija

A.

1976/09/25

3

Skupaj skupno lastništvo

8.

Sukhanovskaya

Julia

Y.

2001/01/10

3

Skupaj skupno lastništvo

Kot vidimo, Ivanova Darya Pugin Vladislav in Anninoy Lyubovi ni registrirano pravice nepremičnin.

In kaj bi mi prejeli, s pomočjo notranje pridruži Notranja pridružiti? Kot veste, se izključuje neusklajene vrstic, tako da tri od našega končnega vzorca preprosto bi padla:

Query1

id

L_name

F_name

Middle_name

Rojstni dan

id_realty

tip

3

Evgenin

Alexander

Federovich

1964/04/30

5

nepremičnine

5

Gerasimovsky

upam

P.

1992/03/14

4

Skupni deli

6

Gerasimovsky

Oleg

Albertovich

1985/01/29

4

Skupni deli

7

Sukhanovskaya

žirija

A.

1976/09/25

1

nepremičnine

7

Sukhanovskaya

žirija

A.

1976/09/25

3

Skupaj skupno lastništvo

8.

Sukhanovskaya

Julia

Y.

2001/01/10

3

Skupaj skupno lastništvo

Zdi se, da je druga različica izpolnjuje tudi pogoje za naš problem. Vendar, če bomo začeli pritrdite na drugo, in še miza, trije ljudje iz rezultata že nepovratno izginilo. Zato je v praksi, ko se združuje več tabel veliko bolj pogosto uporabljajo levo in desno priključek kot Inner pridružijo.

Bo še naprej iskal na levi pridružijo SQL primere. Priložite tabele z naslovi naših hiš:

SELECT Peoples. *, Realty_peoples.id_realty, Realty_peoples.type, Realty.address

IZ narodov

LEFT JOIN Realty_peoples NA Peoples.id = Realty_peoples.id_peoples

LEFT JOIN Realty NA Realty.id = Realty_peoples.id_realty

Zdaj smo dobili ne le neke vrste prava, temveč tudi naslov nepremičnine:

Query1

id

L_name

F_name

Middle_name

Rojstni dan

id_realty

tip

naslov

1

Ivanova

Daria

B.

2000/07/16

2

Pugin

Vladislav

Nikolajevič

1986/01/29

3

Evgenin

Alexander

Federovich

1964/04/30

5

nepremičnine

Arkhangelsk, pl. Terekhina, d. 89, q. 13

4

Annina

ljubezen

P.

1989/12/31

5

Gerasimovsky

upam

P.

1992/03/14

4

Skupni deli

Arkhangelsk regija, Novodvinsk, ul. Proletarshaya, d. 16, q. 137

6

Gerasimovsky

Oleg

Albertovich

1985/01/29

4

Skupni deli

Arkhangelsk regija, Novodvinsk, ul. Proletarshaya, d. 16, q. 137

7

Sukhanovskaya

žirija

A.

1976/09/25

3

Skupaj skupno lastništvo

Arkhangelsk regija, Severodvinsk, st. Lenin, d. 134, q. 85

7

Sukhanovskaya

žirija

A.

1976/09/25

1

nepremičnine

Arkhangelsk, ul. Voronin, d. 7, kv.6

8.

Sukhanovskaya

Julia

Y.

2001/01/10

3

Skupaj skupno lastništvo

Arkhangelsk regija, Severodvinsk, st. Lenin, d. 134, q. 85

Levi pridružijo - tipično uporabo napake: neveljaven postopek mizo

Osnovne napake, ki na levem zunanjem pridruži mize, dva:

  1. Pravilno izbrani vrstni red tabel, za katere so bili podatki izgubili.
  2. Kje napake pri uporabi poizvedbo z pridružijo tabel.

Razmislite prvo napako. Pred odločitvijo o kakršnih koli težav, je treba jasno razumeti, da to, kar želimo, da bi dobili na koncu. V tem primeru zgoraj, smo vsak od ljudi, ampak popolnoma izgubila podatke o predmetu pod številko 2, katerega lastnik ni bil najden.

Če smo se preselili tabel v poizvedbi v nekaterih krajih, in bi začeli s «... Iz Realty leve pridruži ljudstvih ...» katero koli lastnost, da ne bi izgubili, vam ne bo povedal o ljudeh.

Ampak ne boji levi povezavo, preklopite na polno zunanji, ki je vključena v rezultate in ujemanje, in ne na ujemanje linij.

Konec koncev, obseg vzorca je pogosto zelo velik, in dodatno podatkov je dejansko neuporabna. Glavna stvar - da ugotovimo, kaj si želijo, da bi dobili rezultat: za vse ljudi s seznamom svojih razpoložljivih premoženja ali celoten seznam premoženja s svojimi lastniki (če obstaja).

Levi pridružijo - tipično uporabo napake: Zahteva je pravilno pri določanju pogojev v Kam

Druga napaka je povezana tudi z izgubo podatkov, in niso vedno takoj vidna.

Pojdimo nazaj na poizvedbo, ko smo zapustili preko povezave prejela podatke za vse ljudi in njihove obstoječe premoženje. Ne pozabite, naslednji z leve pridruži SQL primer:

IZ Peoples LEFT JOIN Realty_peoples NA Peoples.id = Realty_peoples.id_peoples;

Recimo, da želimo pojasniti zahteve in ne izhodne podatke, v katerih se vrsta prava - "lastnina". Če smo preprosto dodajanje, z uporabo leve pridruži SQL primer pod naslednjimi pogoji:

...

Kadar tip <> "lastnina"

bomo izgubili podatke o ljudeh, ki nimajo premoženja, saj je null vrednost null, ne glede na naslednji način:

Query1

id

L_name

F_name

Middle_name

Rojstni dan

id_realty

tip

5

Gerasimovsky

upam

P.

1992/03/14

4

Skupni deli

6

Gerasimovsky

Oleg

Albertovich

1985/01/29

4

Skupni deli

7

Sukhanovskaya

žirija

A.

1976/09/25

3

Skupaj skupno lastništvo

8.

Sukhanovskaya

Julia

Y.

2001/01/10

3

Skupaj skupno lastništvo

Da bi preprečili napake, ki se pojavljajo zaradi tega, je najbolje, da takoj določi pogoj za izbiro ob povezavi. Predlagamo, da razmisli o naslednjih z leve pridruži SQL primer.

SELECT Peoples. *, Realty_peoples.id_realty, Realty_peoples.type

IZ narodov

LEFT JOIN Realty_peoples ON (Peoples.id = Realty_peoples.id_peoples IN tip <> "lastnina")

Posledica tega bo, kot sledi:

Query1

id

L_name

F_name

Middle_name

Rojstni dan

id_realty

tip

1

Ivanova

Daria

B.

2000/07/16

2

Pugin

Vladislav

Nikolajevič

1986/01/29

3

Evgenin

Alexander

Federovich

1964/04/30

4

Annina

ljubezen

P.

1989/12/31

5

Gerasimovsky

upam

P.

1992/03/14

4

Skupni deli

6

Gerasimovsky

Oleg

Albertovich

1985/01/29

4

Skupni deli

7

Sukhanovskaya

žirija

A.

1976/09/25

3

Skupaj skupno lastništvo

8.

Sukhanovskaya

Julia

Y.

2001/01/10

3

Skupaj skupno lastništvo

Tako, tako, da sledite preprost levo pridružijo SQL primer, smo prejeli seznam vseh ljudi, še bolj, ena od teh lastnosti v kapitalski / skupnega lastništva.

Kot zaključek bi rad še enkrat, da je treba vzorec vseh informacij iz baze podatkov, ki jih je treba sprejeti odgovorno poudarjajo. Veliko odtenkov odprli pred nami z leve pridruži SQL preprost primer, od katerih je ena razlaga - preden začnete pisati celo osnovno poizvedbo, morate skrbno razumeti, kaj želimo, da bi dobili na koncu. Srečno!

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

Copyright © 2018 sl.delachieve.com. Theme powered by WordPress.