PRETRAŽIVANJE SITE

Lijevo pridruživanje (SQL) - primjer, detaljan opis, pogreške korištenja

U bilo kojoj stvarnoj relacijskoj bazi podataka, svepodaci su podijeljeni u zasebne tablice. Mnogi od tablica uspostavili su međusobne odnose u krugu. Međutim, uz pomoć Sql upita, sasvim je moguće uspostaviti vezu između podataka koji nisu sadržani u shemi. To se postiže izvršavanjem operacije pridruživanja pridruženom, što vam omogućuje da izgradite odnose između bilo kojeg broja tablica i povezujete čak i naizgled različite podatke.

U ovom ćemo članku govoriti posebno o lijevoj vanjskoj vezi. Prije nego počnemo opisivati ​​ovu vrstu veze, dodamo neke tablice u bazu podataka.

Priprema potrebnih tablica

Recimo da naša baza podataka ima informacijeo ljudima i njihovim nekretninama. Sažetak se temelji na tri tablice: narodi (ljudi), nekretnine (nekretnina), Realty_peoples (tablice odnose, ljudi koji od onoga što imovina pripada). Pretpostavimo sljedeće podatke spremljene u tablicama naroda:

narodi

id

L_NAME

F_name

Middle_name

rođendan

1

Ivanova

Daria

B.

16.07.2000

2

Pugin

Vladislav

Nikolaevich

29.01.1986

3

Evgenin

Aleksandar

Federovich

30.04.1964

4

Annina

ljubav

P.

31.12.1989

5

Gerasimovsky

nadati se

P.

14.03.1992

6

Gerasimovsky

Oleg

Albertovich

29.01.1985

7

Sukhanovskaya

porota

A.

25.09.1976

8

Sukhanovskaya

Julia

Y.

01.10.2001

Nekretnine:

nekretnina

id

adresa

1

Arkhangelsk, sv. Voronina, 7, ap 6

2

Arkhangelsk, sv. Severodvinskaya, 84, Apt. 9, soba. 5

3

Arkhangelsk regija, Severodvinsk, ul. Lenina, d., 134, apt. 85

4

Regija Arkhangelsk, Novodvinsk, ul. Proletarskaya, 16, Apt. 137

5

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

Za odnose, ljudi su nekretnine:

Realty_peoples

id_peoples

id_realty

vrsta

7

3

Zajedničko zajedničko vlasništvo

8

3

Zajedničko zajedničko vlasništvo

3

5

svojstvo

7

1

svojstvo

5

4

Dijeljeno vlasništvo

6

4

Dijeljeno vlasništvo

Lijevi pridruživanje (Sql) - opis

lijevi spoj sql primjer

Lijeva veza ima sljedeću sintaksu:

Tablica_A LIJEVO PRIDRUŽIVANJE tablica_B [{UKLJUČENO predikat} | {KORIŠTENJE popis_stolbtsov}]

I izgleda ovako:

lijevi primjeri sql primjera

I ovaj je izraz preveden kao "Odaberite svebez iznimke redaka iz tablice A, i iz tablice B izlaze samo linije koje odgovaraju predikatu. Ako u tablici B nije bilo para za retke tablice A, tada ispunite rezultirajuće nulte stupce s vrijednostima. "

Najčešće, kada se izvodi lijeva veza, označen je ON, USING se koristi samo kada su nazivi stupaca za koje je planirana veza isti.

Lijeva veza - primjeri upotrebe

Pomoću lijeve veze možemo vidjeti da li svi ljudi na popisu naroda imaju nekretninu. Da biste to učinili, izvršite sljedeći primjer u lijevom dijelu sql:

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

OD naroda LEFT JOIN Realty_peoples NA Peoples.id = Realty_peoples.id_peoples;

I imamo sljedeći rezultat:

Query1

id

L_NAME

F_name

Middle_name

rođendan

id_realty

vrsta

1

Ivanova

Daria

B.

16.07.2000

2

Pugin

Vladislav

Nikolaevich

29.01.1986

3

Evgenin

Aleksandar

Federovich

30.04.1964

5

svojstvo

4

Annina

ljubav

P.

31.12.1989

5

Gerasimovsky

nadati se

P.

14.03.1992

4

Dijeljeno vlasništvo

6

Gerasimovsky

Oleg

Albertovich

29.01.1985

4

Dijeljeno vlasništvo

7

Sukhanovskaya

porota

A.

25.09.1976

1

svojstvo

7

Sukhanovskaya

porota

A.

25.09.1976

3

Zajedničko zajedničko vlasništvo

8

Sukhanovskaya

Julia

Y.

01.10.2001

3

Zajedničko zajedničko vlasništvo

Kao što vidite, Ivanova Darya, Pugin Vladislav i Annina Lyubov nemaju nikakva registrirana prava na nekretnine.

A što bismo dobili pomoću Unutarnjeg pridruživanja? Kao što znate, on isključuje neusklađene linije, tako da bi troje ljudi iz našeg konačnog uzorka jednostavno ispalo:

Query1

id

L_NAME

F_name

Middle_name

rođendan

id_realty

vrsta

3

Evgenin

Aleksandar

Federovich

30.04.1964

5

svojstvo

5

Gerasimovsky

nadati se

P.

14.03.1992

4

Dijeljeno vlasništvo

6

Gerasimovsky

Oleg

Albertovich

29.01.1985

4

Dijeljeno vlasništvo

7

Sukhanovskaya

porota

A.

25.09.1976

1

svojstvo

7

Sukhanovskaya

porota

A.

25.09.1976

3

Zajedničko zajedničko vlasništvo

8

Sukhanovskaya

Julia

Y.

01.10.2001

3

Zajedničko zajedničko vlasništvo

Čini se da druga opcija također odgovarauvjetima našeg zadatka. Međutim, ako nastavimo dodavati sve više tablica, tri osobe iz rezultata već će nepovratno nestati. Stoga, u praksi, kada se kombiniraju više tablica, lijeve i desne veze mnogo su češće korištene od unutarnjeg pridruživanja.

I dalje ćemo razmotriti primjere s lijeve sql veze. Pridružite se tablici s adresama naših svojstava:

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

Od naroda

LIJEŽITE PRISTUP Realty_peoples ON Peoples.id = Realty_peoples.id_peoples

LEFT JOIN Realty ON Realty.id = Realty_peoples.id_realty

Sada smo dobili ne samo oblik prava, ali i adrese nekretnina:

Query1

id

L_NAME

F_name

Middle_name

rođendan

id_realty

vrsta

adresa

1

Ivanova

Daria

B.

16.07.2000

2

Pugin

Vladislav

Nikolaevich

29.01.1986

3

Evgenin

Aleksandar

Federovich

30.04.1964

5

svojstvo

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

4

Annina

ljubav

P.

31.12.1989

5

Gerasimovsky

nadati se

P.

14.03.1992

4

Dijeljeno vlasništvo

Regija Arkhangelsk, Novodvinsk, ul. Proletarskaya, 16, Apt. 137

6

Gerasimovsky

Oleg

Albertovich

29.01.1985

4

Dijeljeno vlasništvo

Regija Arkhangelsk, Novodvinsk, ul. Proletarskaya, 16, Apt. 137

7

Sukhanovskaya

porota

A.

25.09.1976

3

Zajedničko zajedničko vlasništvo

Arkhangelsk regija, Severodvinsk, ul. Lenina, d., 134, apt. 85

7

Sukhanovskaya

porota

A.

25.09.1976

1

svojstvo

Arkhangelsk, sv. Voronina, 7, ap 6

8

Sukhanovskaya

Julia

Y.

01.10.2001

3

Zajedničko zajedničko vlasništvo

Arkhangelsk regija, Severodvinsk, ul. Lenina, d., 134, apt. 85

Lijevo pridruživanje - tipične pogreške korištenja: pogrešno poredak stolova

Glavne pogreške dopuštene s lijevim vanjskim spajanjem tablica su dvije:

  1. Redoslijed tablica zbog kojih su podaci izgubljeni pogrešno je odabran.
  2. Pogreške pri upotrebi Gdje u upitu s spojenim tablicama.

Razmotrite prvu pogrešku. Prije rješavanja bilo kakvog problema, valja jasno razumjeti što točno želimo dobiti kao rezultat. U gore navedenom primjeru izvadili smo sve ljude, ali su apsolutno izgubili informacije o objektu pod brojem 2, s kojeg vlasnika nije pronađen.

Ako smo premjestili tablice na mjesta upita i započeli s "... Od Realty lijevo pridružite narodima ...", tada ne bismo izgubili niti jednu nekretninu koju ne možete reći o ljudima.

lijevi zahtjev sql zahtjeva primjer

Međutim, nemojte se bojati lijeve veze, idite na puni vanjski, koji će kao rezultat biti uključen i ne podudaraju se s linijom.

Uostalom, volumen uzoraka je često veoma velik i dodatanpodaci stvarno ne trebaju ništa. Glavna stvar - da shvatiti što želite da biste dobili rezultat: od svih ljudi s popisom svojih raspoloživih dobara ili cijeli popis imovine njihovim vlasnicima (ako ih ima).

Lijevo pridruživanje - tipične pogreške korištenja: ispravnost upita prilikom postavljanja uvjeta u Gdje

Druga pogreška je također povezana s gubitkom podataka, a ne uvijek odmah vidljiva.

Vratimo se na upit kada koristimo lijevu vezu podatke o svim ljudima i njihovoj nekretnini. Zapamti sljedeće sa lijevim slojem sql primjer:

OD naroda LEFT JOIN Realty_peoples NA Peoples.id = Realty_peoples.id_peoples;

Pretpostavimo da želimo precizirati upit, a ne podatke izlaznih podataka, gdje je vrsta zakona "svojstvo". Ako jednostavno dodamo, primjenom lijeve sql pridruživanje, primjer slijedeći uvjet:

...

Gdje tip <> "Nekretnine"

izgubit ćemo podatke o osobama koje nemaju nekretninu, jer se prazna vrijednost Null ne uspoređuje na sljedeći način:

Query1

id

L_NAME

F_name

Middle_name

rođendan

id_realty

vrsta

5

Gerasimovsky

nadati se

P.

14.03.1992

4

Dijeljeno vlasništvo

6

Gerasimovsky

Oleg

Albertovich

29.01.1985

4

Dijeljeno vlasništvo

7

Sukhanovskaya

porota

A.

25.09.1976

3

Zajedničko zajedničko vlasništvo

8

Sukhanovskaya

Julia

Y.

01.10.2001

3

Zajedničko zajedničko vlasništvo

Da biste spriječili da se pogreške pojavljuju iz tog razloga, najbolje je odrediti uvjet odabira odmah nakon povezivanja. Predlažemo da uz pomoć lijevog spoja sql razmotrite sljedeći primjer.

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

Od naroda

LEFT JOIN Realty_peoples UKLJUČENO (Peoples.id = Realty_peoples.id_peoples AND tip <> "Property")

Rezultat je sljedeći:

Query1

id

L_NAME

F_name

Middle_name

rođendan

id_realty

vrsta

1

Ivanova

Daria

B.

16.07.2000

2

Pugin

Vladislav

Nikolaevich

29.01.1986

3

Evgenin

Aleksandar

Federovich

30.04.1964

4

Annina

ljubav

P.

31.12.1989

5

Gerasimovsky

nadati se

P.

14.03.1992

4

Dijeljeno vlasništvo

6

Gerasimovsky

Oleg

Albertovich

29.01.1985

4

Dijeljeno vlasništvo

7

Sukhanovskaya

porota

A.

25.09.1976

3

Zajedničko zajedničko vlasništvo

8

Sukhanovskaya

Julia

Y.

01.10.2001

3

Zajedničko zajedničko vlasništvo

Dakle, slijedeći jednostavne lijevo pridružiti SQL primjer, dobili smo popis svih ljudi, kreće dalje, jedan od tih nekretnina u kapital / suvlasništva.

lijevi sql jednostavni primjer objašnjenja

Kao zaključak želim ponovnonaglasiti da je nužno preuzeti odgovornost za odabir bilo koje informacije iz baze podataka. Mnoge nijanse su se otvorile pred nama pomoću jednostavnog lijevog spoja sql, čije objašnjenje je jedno - prije nego što započnemo sastaviti čak i elementarni upit, moramo pažljivo razumjeti što točno želimo dobiti kao rezultat. Sretno!

</ p>
  • Ocjenjivanje: