PočítačeProgramovanie

Left pripojiť (SQL) - príklad, podrobný opis, využitie chyby

V nejakom skutočnom relačnej databázy, všetky informácie sú rozdelené na samostatné tabuľke. Mnohé z týchto tabuliek sú uvedené v komunikačnom systéme so sebou. Avšak, s pomocou SQL dotazov to je celkom možné, aby spojenie medzi údajmi, ktoré nie sú zakotvené v obvode. To sa vykonáva prevedením pripojenia pripojiť, ktorá vám umožní vybudovať vzťah medzi ľubovoľný počet stolov, a dokonca spojiť zdanlivo nesúrodé informácie.

Tento článok sa bude hovoriť konkrétne o ľavej vonkajšie spojenie. Predtým, než sa pristúpi k opisu tohto typu pripojenia, pridajte v niektorých databázových tabuliek.

Pripravuje potrebné tabuľky

Napríklad v našej databáze, sú informácie o ľuďoch a ich nehnuteľností. Súhrn založený na troch tabuľkách: Peoples (ľudia), nehnuteľností (nehnuteľnosti), Realty_peoples (stolný vzťahy, ľudia, ktorí z toho, čo nehnuteľnosti patrí). Predpokladajú sa nasledovné dáta uložené v tabuľkách ľudí:

Peoples

id

L_name

F_name

Middle_name

narodeniny

1

Ivanova

Daria

B.

07/16/2000

2

Pugin

Vladislav

Nikolajevič

29.01.1986

3

Evgenin

alexander

Federov

04/30/1964

4

Annina

milovať

P.

31.12.1989

5

Gerasimovsky

nádeje

P.

14.03.1992

6

Gerasimovsky

Oleg

Albertová

01/29/1985

7

Sukhanovskaya

porota

A.

09/25/1976

8

Sukhanovskaya

Julie

Y.

01.10.2001

nehnuteľností:

nehnuteľnosť

id

adresa

1

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

2

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

3

Arkhangelsk región, Severodvinsk, st. Lenin, d. 134, q. 85

4

Arkhangelsk región, Novodvinsk, ul. Proletarshaya, d. 16, q. 137

5

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

Vzťahy ľudí - nehnuteľností:

Realty_peoples

id_peoples

id_realty

typ

7

3

Celková spoluvlastníctva

8

3

Celková spoluvlastníctva

3

5

vlastnosť

7

1

vlastnosť

5

4

spoločné súčasti

6

4

spoločné súčasti

Doľava pripojiť (SQL) - Opis

Opustil zlúčenina má nasledujúcu syntax:

Table_A LEFT JOIN table_B [{ON predikátu} | {POUŽITIE spisok_ s tolbtsov}]

A schematicky takto:

A tento výraz prekladá ako "Vybrať všetko bez výnimky, riadok tabuľky A Tabuľka B sa zobrazí len zodpovedajúce riadky predikátu. Ak bolo zistené, že tabuľka v tabuľke reťazec pre páry A potom vyplňte výsledné stĺpca Null - hodnoty ".

Najviac často, keď sa nechal pripojenie uvedený ON, ktorý používate, je používaný iba v prípade, že názvy stĺpcov, ktorý je plánovaný pre nadviazanie spojenia sú rovnaké.

LEFT JOIN - príklady použitia

S pripojením naľavo vidíme, všetci ľudia zo zoznamu, ak tam Peoples vlastnosť. Ak to chcete v ľavom pripojiť k SQL dotazu príklad:

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

Z Peoples LEFT JOIN Realty_peoples ON Peoples.id = Realty_peoples.id_peoples;

S nasledujúcimi výsledkami:

Query1

id

L_name

F_name

Middle_name

narodeniny

id_realty

typ

1

Ivanova

Daria

B.

07/16/2000

2

Pugin

Vladislav

Nikolajevič

29.01.1986

3

Evgenin

alexander

Federov

04/30/1964

5

vlastnosť

4

Annina

milovať

P.

31.12.1989

5

Gerasimovsky

nádeje

P.

14.03.1992

4

spoločné súčasti

6

Gerasimovsky

Oleg

Albertová

01/29/1985

4

spoločné súčasti

7

Sukhanovskaya

porota

A.

09/25/1976

1

vlastnosť

7

Sukhanovskaya

porota

A.

09/25/1976

3

Celková spoluvlastníctva

8

Sukhanovskaya

Julie

Y.

01.10.2001

3

Celková spoluvlastníctva

Ako vidíme, Ivanova Darya Pugin Vladislav a Anninoy Lyuba No zapísaná práva nehnuteľností.

A to, čo by sme získali pomocou vnútorné spojenie Vnútorné pripojiť? Ako viete, že vylučuje nezodpovedajúce riadky, tak tri z nášho konečnej vzorky by sa jednoducho klesol:

Query1

id

L_name

F_name

Middle_name

narodeniny

id_realty

typ

3

Evgenin

alexander

Federov

04/30/1964

5

vlastnosť

5

Gerasimovsky

nádeje

P.

14.03.1992

4

spoločné súčasti

6

Gerasimovsky

Oleg

Albertová

01/29/1985

4

spoločné súčasti

7

Sukhanovskaya

porota

A.

09/25/1976

1

vlastnosť

7

Sukhanovskaya

porota

A.

09/25/1976

3

Celková spoluvlastníctva

8

Sukhanovskaya

Julie

Y.

01.10.2001

3

Celková spoluvlastníctva

Mohlo by sa zdať, že druhá verzia tiež spĺňa podmienky pre náš problém. Avšak, ak začneme pripevniť na ďalšie a ďalšie stôl, traja ľudia z výsledku už nenávratne preč. Preto sa v praxi, pri kombinovaní viacerých tabuliek oveľa častejšie používa ľavý a pravý pripojenie než vnútorné spojenie.

Bude aj naďalej hľadať na ľavej strane spojiť sql príklady. Priložiť tabuľku s adresami našich domoch:

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

Z Peoples

LEFT JOIN Realty_peoples ON Peoples.id = Realty_peoples.id_peoples

LEFT JOIN Realty ON Realty.id = Realty_peoples.id_realty

Teraz dostaneme nielen druh práva, ale aj adresy nehnuteľnosti:

Query1

id

L_name

F_name

Middle_name

narodeniny

id_realty

typ

adresa

1

Ivanova

Daria

B.

07/16/2000

2

Pugin

Vladislav

Nikolajevič

29.01.1986

3

Evgenin

alexander

Federov

04/30/1964

5

vlastnosť

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

4

Annina

milovať

P.

31.12.1989

5

Gerasimovsky

nádeje

P.

14.03.1992

4

spoločné súčasti

Arkhangelsk región, Novodvinsk, ul. Proletarshaya, d. 16, q. 137

6

Gerasimovsky

Oleg

Albertová

01/29/1985

4

spoločné súčasti

Arkhangelsk región, Novodvinsk, ul. Proletarshaya, d. 16, q. 137

7

Sukhanovskaya

porota

A.

09/25/1976

3

Celková spoluvlastníctva

Arkhangelsk región, Severodvinsk, st. Lenin, d. 134, q. 85

7

Sukhanovskaya

porota

A.

09/25/1976

1

vlastnosť

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

8

Sukhanovskaya

Julie

Y.

01.10.2001

3

Celková spoluvlastníctva

Arkhangelsk región, Severodvinsk, st. Lenin, d. 134, q. 85

Left pripojiť - typické využitie chyby: Neplatné procedúra tabuľku

Základné chyby urobené v ľavej vonkajšie spojenie tabuliek, z toho dve:

  1. Správne vybraná poradie tabuľky, pre ktoré boli dáta stratená.
  2. Kde chyby pri použití dotazu s spojenie tabuliek.

Zoberme si prvú chybu. Pred rozhodnutím akéhokoľvek problému by malo byť jasné, že to, čo chceme, aby sa do konca roka. V tomto vyššie uvedenom príklade sme sa každý jeden z ľudí, ale úplne stratila informácie o objekte pod číslom 2, ktorého vlastník nebol nájdený.

Ak sme sa presťahovali do tabuliek v dotaze v niektorých miestach, a začne s «... Z ľava nehnuteľností pripojiť Peoples ...» akúkoľvek jednu vlastnosť, neboli by sme stratili, budete rozprávať o ľuďoch, nie.

Ale nemajte strach z ľavej pripojenia, prepnúť na plný externé, ktorá je zahrnutá do výsledkov a prispôsobiť a nie zodpovedajúce riadky.

Po tom všetkom, že objem vzorky je často veľmi veľké, a ďalšie údaje je vlastne k ničomu. Hlavná vec - prísť na to, čo chcete získať výsledok: zo všetkých ľudí so zoznamom ich dostupného majetku alebo celý zoznam majetku s ich vlastníkov (ak existuje).

Left pripojiť - typické využitie chyby: Otázka pri stanovení podmienok v Kde je správny

Druhá chyba je tiež spojená so stratou dát, a nie sú vždy na prvý pohľad zrejmé.

Vráťme sa k dotazu, kedy sme odišli cez prípojky prijatých dát pre všetkých ľudí a ich existujúceho majetku. Pamätať na nasledujúce skutočnosti s ľavým spojiť sql príklad:

Z Peoples LEFT JOIN Realty_peoples ON Peoples.id = Realty_peoples.id_peoples;

Predpokladajme, že chceme objasniť žiadosť a nie je výstupné dáta, kde typ práva - "vlastníctvo". Keby sme jednoducho pripojiť, Ľavým pripojiť SQL príklad za nasledovných podmienok:

...

Kde typ <> "Property"

stratíme údaje o ľuďoch, ktorí nemajú žiadny majetok, pretože null hodnota NULL nie je v porovnaní takto:

Query1

id

L_name

F_name

Middle_name

narodeniny

id_realty

typ

5

Gerasimovsky

nádeje

P.

14.03.1992

4

spoločné súčasti

6

Gerasimovsky

Oleg

Albertová

01/29/1985

4

spoločné súčasti

7

Sukhanovskaya

porota

A.

09/25/1976

3

Celková spoluvlastníctva

8

Sukhanovskaya

Julie

Y.

01.10.2001

3

Celková spoluvlastníctva

Ak chcete zabrániť chybám dochádza z toho dôvodu, že je najlepšie nastaviť podmienku výberového ihneď po pripojení. Navrhujeme zvážiť nasledujúce s ľavou spojiť 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 AND typ <> "vlastníctvo")

Výsledok bude vyzerať nasledovne:

Query1

id

L_name

F_name

Middle_name

narodeniny

id_realty

typ

1

Ivanova

Daria

B.

07/16/2000

2

Pugin

Vladislav

Nikolajevič

29.01.1986

3

Evgenin

alexander

Federov

04/30/1964

4

Annina

milovať

P.

31.12.1989

5

Gerasimovsky

nádeje

P.

14.03.1992

4

spoločné súčasti

6

Gerasimovsky

Oleg

Albertová

01/29/1985

4

spoločné súčasti

7

Sukhanovskaya

porota

A.

09/25/1976

3

Celková spoluvlastníctva

8

Sukhanovskaya

Julie

Y.

01.10.2001

3

Celková spoluvlastníctva

Tým, že po jednoduchých až po ľavej strane spojiť sql príklad, sme dostali zoznam všetkých ľudí, pohybujúce sa ďalej, jeden z týchto vlastností v prípade akciovej / spoločného vlastníctva.

Na záver by som chcel ešte raz zdôrazniť, že vzorka akékoľvek informácie z databázy treba brať zodpovedne zdôrazniť. Mnoho nuansy otvoril pred nami s ľavou spojiť sql jednoduchý príklad, vysvetlenie, z ktorých jeden - predtým, než začnete písať ani základnú otázku, musíte starostlivo pochopiť, čo chceme dostať do konca roka. Veľa šťastia!

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

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