RačunalaProgramiranje

Lijeva se pridruže (SQL) - primjer, detaljan opis, upotreba greške

U bilo kojoj stvarnoj relacionoj bazi podataka, sve informacije se distribuiraju na zasebnim tabelama. Mnoge tabele su uspostavile odnose u krugu zajedno. Međutim, koristeći Sql upite, sasvim je moguće napraviti vezu između podataka koji nisu sadržani u šemi. Ovo se postiže obavljanjem operacije pridruživanja pridruživanja, što vam omogućava da izgradite odnose između bilo kog broja tabela i povežete čak i naizgled različite podatke.

U ovom članku ćemo govoriti konkretno o levoj spoljnoj vezi. Pre nego što počnemo opisati ovu vrstu veze, dodali smo nekoliko tabela u bazu podataka.

Priprema potrebnih tabela

Na primer, u našoj bazi podataka nalaze se informacije o ljudima i njihovoj nepokretnosti. Osnovne informacije se zasnivaju na tri tabele: narodi (ljudi), nekretnine (nekretnine), nekretnine (stanovi sa odnosom, kome ljudi pripadaju nekretnine). Pretpostavimo da su u tabelama složeni sljedeći podaci za ljude:

Ljudi

Id

L_name

F_name

Middle_name

Rođendan

1

Ivanova

Daria

Borisovna

16.07.2000

2

Pugin

Vladislav

Nikolayevich

29.01.1986

3

Evgeniin

Alexander

Fedorovič

30.04.1964

4

Annina

Ljubav

Pavlovna

31.12.1989

5

Gerasimovskaya

Nadam se

Pavlovna

14.03.1992

6

Gerasimovsky

Oleg

Albertovich

29.01.1985

7

Sukhanovsky

Jurij

Andreevič

25.09.1976

8

Sukhanovskaya

Julia

Yuryevna

10.1.2001

Nekretnina:

Realty

Id

Adresa

1

Arkhangelsk, ul. Voronina, 7, ap.6

2

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

3

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

4

Arkhangelsk Region, Novodvinsk, ul. Proletarskaja, 16, Apt. 137

5

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

Za odnose, ljudi su nekretnine:

Realty_peoples

Id_peoples

Id_realty

Tip

7

3

Zajedničko zajedničko vlasništvo

8

3

Zajedničko zajedničko vlasništvo

3

5

Vlasništvo

7

1

Vlasništvo

5

4

Zajedničko vlasništvo

6

4

Zajedničko vlasništvo

Levi spoj (Sql) - opis

Leva veza ima sledeću sintaksu:

Table_A LEFT JOIN table_B [{ON predikat } | {USING lista iz kolona }]

I to izgleda ovako:

I ovaj izraz je preveden kao "Izaberi sve redove iz tabele A bez izuzetka, a izlazi samo linije koje odgovaraju predikatu iz tabele B. Ako u tabeli B nije bilo para za redove tablice A, onda popunite rezultirajuće Null kolone sa vrijednostima ".

Najčešće, kada se vrši leva veza, ON je specificiran, USING se koristi samo kada su imena kolona za koje je zakazana veza iste.

Levi spoj - primjeri korištenja

Uz pomoć leve veze možemo videti da li svi ljudi na listi naroda imaju nekretninu. Da biste to uradili, izvršite sledeći primer u levom pridruživanju sql:

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

OD NARODA LEFT JOIN Realty_peoples ON Peoples.id = Realty_peoples.id_peoples;

I dobićemo sledeći rezultat:

Request1

Id

L_name

F_name

Middle_name

Rođendan

Id_realty

Tip

1

Ivanova

Daria

Borisovna

16.07.2000

2

Pugin

Vladislav

Nikolayevich

29.01.1986

3

Evgeniin

Alexander

Fedorovič

30.04.1964

5

Vlasništvo

4

Annina

Ljubav

Pavlovna

31.12.1989

5

Gerasimovskaya

Nadam se

Pavlovna

14.03.1992

4

Zajedničko vlasništvo

6

Gerasimovsky

Oleg

Albertovich

29.01.1985

4

Zajedničko vlasništvo

7

Sukhanovsky

Jurij

Andreevič

25.09.1976

1

Vlasništvo

7

Sukhanovsky

Jurij

Andreevič

25.09.1976

3

Zajedničko zajedničko vlasništvo

8

Sukhanovskaya

Julia

Yuryevna

10.1.2001

3

Zajedničko zajedničko vlasništvo

Kao što vidite, Ivanova Darya, Pugin Vladislav i Annina Lyubov nemaju registrovana prava na nekretninama.

I šta bi koristili unutrašnji priključak Unutrašnjost? Kao što znate, on isključuje neusklađene linije, tako da bi tri osobe iz našeg finalnog uzorka jednostavno pale:

Request1

Id

L_name

F_name

Middle_name

Rođendan

Id_realty

Tip

3

Evgeniin

Alexander

Fedorovič

30.04.1964

5

Vlasništvo

5

Gerasimovskaya

Nadam se

Pavlovna

14.03.1992

4

Zajedničko vlasništvo

6

Gerasimovsky

Oleg

Albertovich

29.01.1985

4

Zajedničko vlasništvo

7

Sukhanovsky

Jurij

Andreevič

25.09.1976

1

Vlasništvo

7

Sukhanovsky

Jurij

Andreevič

25.09.1976

3

Zajedničko zajedničko vlasništvo

8

Sukhanovskaya

Julia

Yuryevna

10.1.2001

3

Zajedničko zajedničko vlasništvo

Čini se da druga opcija ispunjava i uslove našeg zadatka. Međutim, ako nastavimo da dodamo sve više i više tabela, tri osobe iz rezultata će već nepovratno nestati. Stoga, u praksi, prilikom kombinovanja višestrukih tabela, levi i desni priključci se mnogo češće koriste od Inner pridruživanja.

Nastavljamo da razmatramo primere sa levim pridruživanjem sql. Pridružite se tablici sa adresama naših osobina:

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

OD NARODA

LEFT JOIN Realty_peoples ON Peoples.id = Realty_peoples.id_peoples

LEFT JOIN Realty ON Realty.id = Realty_peoples.id_realty

Sada dobijamo ne samo oblik desnice, već i adrese nekretnina:

Request1

Id

L_name

F_name

Middle_name

Rođendan

Id_realty

Tip

Adresa

1

Ivanova

Daria

Borisovna

16.07.2000

2

Pugin

Vladislav

Nikolayevich

29.01.1986

3

Evgeniin

Alexander

Fedorovič

30.04.1964

5

Vlasništvo

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

4

Annina

Ljubav

Pavlovna

31.12.1989

5

Gerasimovskaya

Nadam se

Pavlovna

14.03.1992

4

Zajedničko vlasništvo

Arkhangelsk Region, Novodvinsk, ul. Proletarskaja, 16, Apt. 137

6

Gerasimovsky

Oleg

Albertovich

29.01.1985

4

Zajedničko vlasništvo

Arkhangelsk Region, Novodvinsk, ul. Proletarskaja, 16, Apt. 137

7

Sukhanovsky

Jurij

Andreevič

25.09.1976

3

Zajedničko zajedničko vlasništvo

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

7

Sukhanovsky

Jurij

Andreevič

25.09.1976

1

Vlasništvo

Arkhangelsk, ul. Voronina, 7, ap.6

8

Sukhanovskaya

Julia

Yuryevna

10.1.2001

3

Zajedničko zajedničko vlasništvo

Arhangelsk regija, Severodvinsk, st. Lenjin, d. 134, q. 85

Lijevo se pridruže - tipična upotreba greške: invalid sto postupak

Osnovne greške na lijevom vanjskom pridruže stolova, dva:

  1. Pravilno izabran reda stolova za koje je izgubljen podaci.
  2. Gdje greške kada se koristi upit sa pridruže stolovima.

Razmislite o prva greška. Prije odluke o svakom problemu treba jasno shvatiti da je ono što mi želimo da se na kraju. U ovom primjeru gore, uzeli smo svaki jedan od ljudi, ali potpuno izgubila informacije o predmetu pod brojem 2, čiji je vlasnik nije pronađen.

Ako smo se uselili tabele u upitu u nekim mjestima, i da će početi sa «... Od Realty ostavio pridruže naroda ...» bilo koje imovine, ne bismo izgubili, nećete reći o ljudima.

Ali, ne boj se lijeve veza, pređite na punu vanjski, koji je uključen u rezultate i odgovarajuće, a ne usklađivanje linija.

Uostalom, volumen uzorka je često vrlo velika, a dodatne podatke je zapravo beskorisno. Glavna stvar - da shvatim ono što želite da biste dobili rezultat: od svih ljudi sa listom svojih raspoloživih imovine ili cjelokupna lista imovine s njihovim vlasnicima (ako ih ima).

Lijevo se pridruže - tipična upotreba greške: Zahtjev je u pravu kad stvaranje uslova u Gdje

Drugi greška je takođe povezana sa gubitkom podataka, i nisu uvijek odmah vidljivo.

Vratimo se na upit kada smo otišli preko veze dobila podatke za sve ljude i njihove postojeće imovine. Ne zaboravite sljedeće s lijevim pridruže SQL primjer:

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

Pretpostavimo da želimo razjasniti zahtjev i ne izlaz podataka, gdje je vrsta zakona - "Imovina". Ako se jednostavno dodati, koristeći lijevi pridruže SQL, primjer sljedeće stanje:

...

Gdje tip <> "Imovina"

ćemo izgubiti podatke o ljudima koji nemaju imovinu, jer null vrijednost Null ne u odnosu na sljedeći način:

Query1

id

L_name

F_name

Middle_name

rođendan

id_realty

tip

5

Gerasimovsky

nada

P.

1992/03/14

4

zajedničkim dijelovima

6

Gerasimovsky

Oleg

Albertovich

1985/01/29

4

zajedničkim dijelovima

7

Sukhanovskaya

porota

A.

1976/09/25

3

Ukupno suvlasništvu

8

Sukhanovskaya

Julia

Y.

01.10.2001

3

Ukupno suvlasništvu

Da biste spriječili greške iz javljaju iz tog razloga, najbolje je da se odmah nakon skupa veze stanje izbor. Predlažemo da razmotre sljedeće levom pridruže sql primjer.

SELECT naroda. *, Realty_peoples.id_realty, Realty_peoples.type

IZ naroda

LEFT JOIN Realty_peoples ON (Peoples.id = Realty_peoples.id_peoples i tip <> "Imovina")

Rezultat će biti kako slijedi:

Query1

id

L_name

F_name

Middle_name

rođendan

id_realty

tip

1

ivanova

Daria

B.

2000/07/16

2

Pugin

vladislav

Nikolaevich

1986/01/29

3

Evgenin

Aleksandar

Federovich

1964/04/30

4

Annina

ljubav

P.

31.12.1989

5

Gerasimovsky

nada

P.

1992/03/14

4

zajedničkim dijelovima

6

Gerasimovsky

Oleg

Albertovich

1985/01/29

4

zajedničkim dijelovima

7

Sukhanovskaya

porota

A.

1976/09/25

3

Ukupno suvlasništvu

8

Sukhanovskaya

Julia

Y.

01.10.2001

3

Ukupno suvlasništvu

Na taj način, slijedeći jednostavne lijevo pridruže SQL primjer, dobili smo listu svih ljudi, kreće dalje, jedan od ta svojstva u vlasničke / zajedničko vlasništvo.

Kao zaključak bih još jednom naglasiti da treba uzeti odgovorno uzorak bilo koje informacije iz baze podataka naglasiti. Mnogi nijanse otvorio pred nama s lijevim pridruže SQL jednostavan primjer, od kojih je jedan objašnjenje - prije nego što počnete pisati ni osnovne upita, morate pažljivo da shvatite ono što želimo da se na kraju. Sretno!

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

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