RačunalaProgramiranje

Lijevo se pridruže (SQL) - primjer, detaljni opis, korištenje pogreške

U svakom stvarnom relacijske baze podataka, sve informacije se distribuira na posebnom stolu. Mnogi od stolova su izneseni u komunikacijskom sustavu jedni s drugima. Međutim, uz pomoć SQL upite sasvim je moguće staviti vezu između podataka, koje nisu obuhvaćene u krug. To je učinjeno izvođenjem pridružiti vezu, koja vam omogućuje da izgradite odnos između bilo koji broj tablica, pa čak i povezati naizgled različitih podataka.

Ovaj članak će govoriti upravo o lijevi vanjski pridružiti. Prije prelaska na opis ove vrste veze, dodati u nekim tablicama baze podataka.

Priprema potrebnih tablica

Na primjer, u našoj bazi ne postoji informacija o 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.

2000/07/16

2

Pugin

Vladislav

Nikolaevich

1986/01/29

3

Evgenin

Aleksandar

Federovich

1964/04/30

4

Annina

ljubav

P.

1989/12/31

5

Gerasimovsky

nadati se

P.

1992/03/14

6

Gerasimovsky

Oleg

Albertovich

1985/01/29

7

Sukhanovskaya

porota

A.

1976/09/25

8

Sukhanovskaya

Julia

Y.

2001/01/10

Nekretnine:

nekretnina

id

adresa

1

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

2

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

3

Arkhangelsk regija, Severodvinsk, sv. Lenjin, d, 134, q. 85

4

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

5

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

Odnosi ljudi - imovinska:

Realty_peoples

id_peoples

id_realty

vrsta

7

3

Ukupno zajedničko vlasništvo

8

3

Ukupno zajedničko vlasništvo

3

5

svojstvo

7

1

svojstvo

5

4

Zajednički dijelovi

6

4

Zajednički dijelovi

Lijevo pridružiti (SQL) - Opis

Lijevo spoj ima sljedeću sintaksu:

Table_A lijevi PRIDRUŽITE table_B [{ON kazneno} | {UPORABA spisok_ s tolbtsov}]

A shematski kao što slijedi:

I ovaj izraz prevodi kao „Odaberi sve, bez izuzetka, linija tablice A i tablice B za prikaz samo odgovarajuće retke iz predikata. Ako je pronađena stol u string stol za parove A, a zatim ispunite nastale kolone Null - vrijednosti”.

Najčešće, kada je napustio veza naznačeno, korištenjem koristi samo kada su nazivi stupaca, koji se planira uspostaviti vezu su isti.

Lijevo se pridruže - primjeri korištenja

Uz priključak s lijeve strane možemo vidjeti, svi ljudi s popisa ako postoji naroda imovine. Da biste to učinili u lijevo pridružiti SQL upita primjer:

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

S Peoples lijevi PRIDRUŽITE Realty_peoples ON Peoples.id = Realty_peoples.id_peoples;

Sa sljedećim rezultatima:

Query1

id

L_NAME

F_name

Middle_name

rođendan

id_realty

vrsta

1

Ivanova

Daria

B.

2000/07/16

2

Pugin

Vladislav

Nikolaevich

1986/01/29

3

Evgenin

Aleksandar

Federovich

1964/04/30

5

svojstvo

4

Annina

ljubav

P.

1989/12/31

5

Gerasimovsky

nadati se

P.

1992/03/14

4

Zajednički dijelovi

6

Gerasimovsky

Oleg

Albertovich

1985/01/29

4

Zajednički dijelovi

7

Sukhanovskaya

porota

A.

1976/09/25

1

svojstvo

7

Sukhanovskaya

porota

A.

1976/09/25

3

Ukupno zajedničko vlasništvo

8

Sukhanovskaya

Julia

Y.

2001/01/10

3

Ukupno zajedničko vlasništvo

Kao što vidimo, Ivanova Darja Pugin Vladislav i Anninoy Lyubovi Ne registriran prava nekretnina.

A što bi smo dobili, koristite unutarnji pridružiti Unutarnja pridružiti? Kao što znate, to isključuje nepodudarne redaka, pa tri iz našeg konačnog uzorka jednostavno bi pao:

Query1

id

L_NAME

F_name

Middle_name

rođendan

id_realty

vrsta

3

Evgenin

Aleksandar

Federovich

1964/04/30

5

svojstvo

5

Gerasimovsky

nadati se

P.

1992/03/14

4

Zajednički dijelovi

6

Gerasimovsky

Oleg

Albertovich

1985/01/29

4

Zajednički dijelovi

7

Sukhanovskaya

porota

A.

1976/09/25

1

svojstvo

7

Sukhanovskaya

porota

A.

1976/09/25

3

Ukupno zajedničko vlasništvo

8

Sukhanovskaya

Julia

Y.

2001/01/10

3

Ukupno zajedničko vlasništvo

Čini se da je druga verzija je također ispunjava uvjete našeg problema. Međutim, ako počnemo priključiti na drugu, a drugi stol, tri osobe iz rezultata već nepovratno nestao. Stoga, u praksi, kada se kombiniraju više tablica mnogo češće koriste lijevi i desni priključak od unutarnjeg pridružiti.

Hoće li i dalje gledati na lijevo pridružiti sql primjera. Pričvrstite stol s adresama naših kuća:

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

IZ naroda

LIJEVO PRIDRUŽITE Realty_peoples NA Peoples.id = Realty_peoples.id_peoples

LIJEVO PRIDRUŽITE Realty NA Realty.id = Realty_peoples.id_realty

Sada smo dobili ne samo neku vrstu zakona, ali i adresu nekretnine:

Query1

id

L_NAME

F_name

Middle_name

rođendan

id_realty

vrsta

adresa

1

Ivanova

Daria

B.

2000/07/16

2

Pugin

Vladislav

Nikolaevich

1986/01/29

3

Evgenin

Aleksandar

Federovich

1964/04/30

5

svojstvo

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

4

Annina

ljubav

P.

1989/12/31

5

Gerasimovsky

nadati se

P.

1992/03/14

4

Zajednički dijelovi

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

6

Gerasimovsky

Oleg

Albertovich

1985/01/29

4

Zajednički dijelovi

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

7

Sukhanovskaya

porota

A.

1976/09/25

3

Ukupno zajedničko vlasništvo

Arkhangelsk regija, Severodvinsk, sv. Lenjin, d, 134, q. 85

7

Sukhanovskaya

porota

A.

1976/09/25

1

svojstvo

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

8

Sukhanovskaya

Julia

Y.

2001/01/10

3

Ukupno zajedničko vlasništvo

Arkhangelsk regija, Severodvinsk, sv. Lenjin, d, 134, q. 85

Lijevo se pridruže - tipičnu uporabu pogreške: nevažeći stol postupak

Osnovne pogreške učinjene na lijevoj vanjskog pridružiti tablice, dva:

  1. Pravilno odabrani redoslijed stolova za koje se podaci izgubljeni.
  2. Gdje pogreške prilikom korištenja upit s pridružiti tablice.

Razmislite prvi pogrešku. Prije donošenja odluke bilo kakvih problema treba jasno razumjeti da ono što želimo dobiti na kraju. U ovom primjeru, uzeli smo svaki od ljudi, ali potpuno izgubio podatke o objektu pod brojem 2, čiji je vlasnik nije pronađen.

Ako smo se preselili tablice u upitu u nekim mjestima, i da će početi sa «... Iz nekretnina napustio pridružiti naroda ...» bilo jedno svojstvo, ne bismo izgubili, nećete reći o ljudima.

No, nemojte se bojati lijeve veze, prebaciti na puni vanjski, koji je uključen u rezultate, te usklađivanje, a ne prema zadanim linijama.

Uostalom, volumen uzorka je često vrlo velika, a dodatni podaci zapravo beskoristan. 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 se pridruže - tipičnu uporabu pogreške: Zahtjev je ispravan prilikom određivanja uvjeta u WHERE

Druga greška je također povezan s gubitkom podataka, i nisu uvijek vidljivi odmah.

Vratimo se na upit kad smo otišli preko veze dobila podatke za sve ljude i njihove postojeće imovine. Zapamtite sljedeće s lijeve pridružiti SQL primjer:

S Peoples lijevi PRIDRUŽITE Realty_peoples ON Peoples.id = Realty_peoples.id_peoples;

Pretpostavimo da želimo razjasniti zahtjev i ne emitira podatke, gdje je vrsta zakona - „vlasništvo”. Ako mi jednostavno dodati, koristeći napustio pridružiti SQL, primjer sljedećim uvjetima:

...

Gdje tipa <> „nekretnine”

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

Query1

id

L_NAME

F_name

Middle_name

rođendan

id_realty

vrsta

5

Gerasimovsky

nadati se

P.

1992/03/14

4

Zajednički dijelovi

6

Gerasimovsky

Oleg

Albertovich

1985/01/29

4

Zajednički dijelovi

7

Sukhanovskaya

porota

A.

1976/09/25

3

Ukupno zajedničko vlasništvo

8

Sukhanovskaya

Julia

Y.

2001/01/10

3

Ukupno zajedničko vlasništvo

Kako bi spriječili pogreške iz pojavio iz tog razloga, najbolje je da postavite uvjet za izbor odmah nakon veze. Predlažemo da razmislite s lijeve sljedeće pridružiti SQL primjer.

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

IZ naroda

LIJEVO PRIDRUŽITE Realty_peoples ON (Peoples.id = Realty_peoples.id_peoples i tip <> "vlasništvo")

Rezultat će biti sljedeći:

Query1

id

L_NAME

F_name

Middle_name

rođendan

id_realty

vrsta

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.

1989/12/31

5

Gerasimovsky

nadati se

P.

1992/03/14

4

Zajednički dijelovi

6

Gerasimovsky

Oleg

Albertovich

1985/01/29

4

Zajednički dijelovi

7

Sukhanovskaya

porota

A.

1976/09/25

3

Ukupno zajedničko vlasništvo

8

Sukhanovskaya

Julia

Y.

2001/01/10

3

Ukupno 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.

Kao zaključak Želio bih naglasiti još jednom da se uzorak bilo kakve informacije iz baze podataka treba uzeti odgovorno. Mnogi nijanse otvaraju pred nama s lijeve strane pridružiti SQL jednostavan primjer, od kojih je jedan objašnjenje - prije nego što počnete pisati čak i osnovne upit, morate pažljivo razumjeti ono što želimo dobiti na kraju. Sretno!

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

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