CalculatoareProgramare

Alăture stânga (SQL) - un exemplu, descrierea detaliată, utilizarea erorii

În orice bază de date relațională reală, toate informațiile sunt distribuite pe un tabel separat. Multe dintre tabele sunt prezentate în schema de comunicare unul cu celălalt. Cu toate acestea, cu ajutorul interogarilor este destul de posibil să se pună o legătură între datele, care nu sunt înglobate în circuit. Acest lucru se face prin efectuarea unei conexiuni se alăture, care vă permite să construiască o relație între orice număr de tabele, și chiar conectați informații aparent disparate.

Acest articol va vorbi în mod specific despre exterior din stânga se alăture. Înainte de a trece la descrierea acestui tip de conexiune, se adaugă în anumite tabele de baze de date.

Pregătirea tabelelor necesare

De exemplu, în baza noastră de date, există informații despre oameni și bunuri lor reale. Rezumat bazat pe cele trei tabele: Popoarelor (oameni), Realty (imobiliare), Realty_peoples (relații de masă, oameni care din ce proprietate aparține). Să presupunem următoarele date stocate în tabelele de oameni:

Peoples

id

L_NAME

F_name

Middle_name

zi de naștere

1

Ivanova

Daria

B.

07/16/2000

2

Pugin

Vladislav

Nikolaevici

29.01.1986

3

Evgenin

Alexander

Federovich

04/30/1964

4

Annina

dragoste

P.

31.12.1989

5

Gerasimovsky

speranță

P.

14.03.1992

6

Gerasimovsky

Oleg

Albertovich

01/29/1985

7

Sukhanovskaya

juriu

A.

09/25/1976

8

Sukhanovskaya

Julia

Y.

01.10.2001

Imobiliare:

proprietate imobilă

id

adresa

1

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

2

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

3

regiunea Arhanghelsk, Severodvinsk, st. Lenin, d. 134, q. 85

4

regiunea Arhanghelsk, Novodvinsk, ul. Proletarshaya, d. 16, q. 137

5

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

oameni - Relații de proprietate:

Realty_peoples

id_peoples

id_realty

tip

7

3

Total drepturi de proprietate comună

8

3

Total drepturi de proprietate comună

3

5

proprietate

7

1

proprietate

5

4

Piese comune

6

4

Piese comune

Stânga se alăture (Sql) - Descriere

compus stanga are următoarea sintaxă:

Table_A STÂNGA TE table_B [{ON predicat} | {FOLOSIND spisok_ cu tolbtsov}]

Și, în mod schematic după cum urmează:

Și această expresie este tradus ca „Selectare toate, fără excepție, linia din tabelul A și tabelul B pentru a afișa numai rândurile care se potrivesc de predicatului. Dacă tabela a fost găsită în tabela string pentru perechile A, apoi umple coloanele rezultate Null - valori“.

Cel mai adesea, atunci când conexiunea la stânga este indicat pe, utilizați este utilizat numai în cazul în care numele coloanelor, care este planificat pentru a face conexiunea sunt la fel.

alăture stânga - exemple de utilizare

Prin conexiunea de stânga putem vedea, toți oamenii din listă, dacă există Peoples proprietate. Pentru a face acest lucru în stânga se alăture exemplu de interogare sql:

Popoarele SELECT. *, Realty_peoples.id_realty, Realty_peoples.type

DIN STÂNGA Peoples TE Realty_peoples PE Peoples.id = Realty_peoples.id_peoples;

Cu următoarele rezultate:

Query1

id

L_NAME

F_name

Middle_name

zi de naștere

id_realty

tip

1

Ivanova

Daria

B.

07/16/2000

2

Pugin

Vladislav

Nikolaevici

29.01.1986

3

Evgenin

Alexander

Federovich

04/30/1964

5

proprietate

4

Annina

dragoste

P.

31.12.1989

5

Gerasimovsky

speranță

P.

14.03.1992

4

Piese comune

6

Gerasimovsky

Oleg

Albertovich

01/29/1985

4

Piese comune

7

Sukhanovskaya

juriu

A.

09/25/1976

1

proprietate

7

Sukhanovskaya

juriu

A.

09/25/1976

3

Total drepturi de proprietate comună

8

Sukhanovskaya

Julia

Y.

01.10.2001

3

Total drepturi de proprietate comună

După cum vom vedea, Ivanova Darya Pugin Vladislav și Anninoy Lyubovi nr înregistrat drepturi imobiliare.

Și ce ar am primit, folosind un interior se alăture se alăture interior? După cum știți, exclude rândurile care nu se potrivesc, deci trei din eșantionul nostru final va fi pur și simplu a scăzut:

Query1

id

L_NAME

F_name

Middle_name

zi de naștere

id_realty

tip

3

Evgenin

Alexander

Federovich

04/30/1964

5

proprietate

5

Gerasimovsky

speranță

P.

14.03.1992

4

Piese comune

6

Gerasimovsky

Oleg

Albertovich

01/29/1985

4

Piese comune

7

Sukhanovskaya

juriu

A.

09/25/1976

1

proprietate

7

Sukhanovskaya

juriu

A.

09/25/1976

3

Total drepturi de proprietate comună

8

Sukhanovskaya

Julia

Y.

01.10.2001

3

Total drepturi de proprietate comună

S-ar părea că a doua versiune îndeplinește, de asemenea, condițiile de problema noastră. Cu toate acestea, în cazul în care vom începe să se atașeze pe un alt, și o altă masă, trei persoane din rezultatul deja plecat definitiv. Prin urmare, în practică, atunci când se combină mai multe mese mult mai des utilizate conexiune stânga și la dreapta decât interioară se alăture.

Va continua să se uite la stânga se alăture exemple sql. Atașați un tabel cu adresele caselor noastre:

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

DE LA Peoples

STÂNGA TE Realty_peoples PE Peoples.id = Realty_peoples.id_peoples

STÂNGA TE Realty ON Realty.id = Realty_peoples.id_realty

Acum vom obține nu numai un fel de drept, dar, de asemenea, adresa de bunuri imobiliare:

Query1

id

L_NAME

F_name

Middle_name

zi de naștere

id_realty

tip

adresa

1

Ivanova

Daria

B.

07/16/2000

2

Pugin

Vladislav

Nikolaevici

29.01.1986

3

Evgenin

Alexander

Federovich

04/30/1964

5

proprietate

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

4

Annina

dragoste

P.

31.12.1989

5

Gerasimovsky

speranță

P.

14.03.1992

4

Piese comune

regiunea Arhanghelsk, Novodvinsk, ul. Proletarshaya, d. 16, q. 137

6

Gerasimovsky

Oleg

Albertovich

01/29/1985

4

Piese comune

regiunea Arhanghelsk, Novodvinsk, ul. Proletarshaya, d. 16, q. 137

7

Sukhanovskaya

juriu

A.

09/25/1976

3

Total drepturi de proprietate comună

regiunea Arhanghelsk, Severodvinsk, st. Lenin, d. 134, q. 85

7

Sukhanovskaya

juriu

A.

09/25/1976

1

proprietate

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

8

Sukhanovskaya

Julia

Y.

01.10.2001

3

Total drepturi de proprietate comună

regiunea Arhanghelsk, Severodvinsk, st. Lenin, d. 134, q. 85

alăture stânga - utilizarea tipică de eroare: tabelul de procedură nevalid

greșelile de bază realizate la exterior din stânga se alăture mese, două:

  1. selectat corect ordinea de tabele pentru care a fost pierdut date.
  2. În cazul în care erorile atunci când se utilizează o interogare cu tabele se alăture.

Luați în considerare prima greșeală. Înainte de decizia cu privire la orice problemă ar trebui să fie înțeles în mod clar că ceea ce vrem să ajungem în cele din urmă. În acest exemplu de mai sus, am luat fiecare dintre oameni, dar a pierdut complet informația despre obiect sub numărul 2, al cărui proprietar nu a fost găsit.

Dacă ne-am mutat tabelele într-o interogare, în unele locuri, și ar începe cu «... De la Realty a plecat ...» se alăture Peoples orice proprietate, nu ne-ar fi pierdut, nu va spune despre oameni.

Dar nu se sperie de excentrică, a comuta la exterior, care este inclus în rezultatele și de potrivire, nu și liniile ce se potrivesc.

La urma urmei, volumul eșantionului este de multe ori foarte mare, iar datele suplimentare este de fapt inutil. Principalul lucru - pentru a descoperi ceea ce doriți să obțineți un rezultat: tuturor persoanelor cu o listă a proprietății lor disponibile sau întreaga listă proprietate cu proprietarii lor (dacă este cazul).

alăture stânga - utilizarea tipică de eroare: Cerere este corectă atunci când stabilirea condițiilor în Where

A doua eroare este, de asemenea, asociată cu pierderea de date, și nu sunt întotdeauna vizibile imediat.

Să ne întoarcem la interogarea atunci când am plecat prin intermediul conexiunilor de date primite pentru toți oamenii și proprietatea lor existente. Amintiți-vă următorul text cu stânga se alăture exemplu sql:

DIN STÂNGA Peoples TE Realty_peoples PE Peoples.id = Realty_peoples.id_peoples;

Să presupunem că vrem să clarifice cererea și nu emite datele, în cazul în care tipul de drept - „proprietate“. Dacă vom adăuga pur și simplu, folosind din stânga se alăture sql, un exemplu de următoarea condiție:

...

În cazul în care tipul <> „proprietate“

vom pierde datele privind persoanele care nu au nici o proprietate, deoarece Nul valoare nulă nu se compară după cum urmează:

Query1

id

L_NAME

F_name

Middle_name

zi de naștere

id_realty

tip

5

Gerasimovsky

speranță

P.

14.03.1992

4

Piese comune

6

Gerasimovsky

Oleg

Albertovich

01/29/1985

4

Piese comune

7

Sukhanovskaya

juriu

A.

09/25/1976

3

Total drepturi de proprietate comună

8

Sukhanovskaya

Julia

Y.

01.10.2001

3

Total drepturi de proprietate comună

Pentru a preveni apariția erorilor din acest motiv, cel mai bine este să setați condiția de selecție imediat după conectare. Vă sugerăm să ia în considerare următoarele cu stânga se alăture exemplu sql.

Popoarele SELECT. *, Realty_peoples.id_realty, Realty_peoples.type

DE LA Peoples

STÂNGA TE Realty_peoples PE (Peoples.id = Realty_peoples.id_peoples și tipul <> "proprietate")

Rezultatul va fi după cum urmează:

Query1

id

L_NAME

F_name

Middle_name

zi de naștere

id_realty

tip

1

Ivanova

Daria

B.

07/16/2000

2

Pugin

Vladislav

Nikolaevici

29.01.1986

3

Evgenin

Alexander

Federovich

04/30/1964

4

Annina

dragoste

P.

31.12.1989

5

Gerasimovsky

speranță

P.

14.03.1992

4

Piese comune

6

Gerasimovsky

Oleg

Albertovich

01/29/1985

4

Piese comune

7

Sukhanovskaya

juriu

A.

09/25/1976

3

Total drepturi de proprietate comună

8

Sukhanovskaya

Julia

Y.

01.10.2001

3

Total drepturi de proprietate comună

Astfel, urmând simplu la stânga se alăture exemplu sql, am primit o listă a tuturor oamenilor, se deplasează în continuare, una dintre aceste proprietăți într-un capital propriu / proprietate comună.

Ca o concluzie, aș dori să subliniez încă o dată că un eșantion de informații din baza de date trebuie să fie luate în mod responsabil. Multe nuanțe deschise în fața noastră cu stânga se alăture exemplu simplu sql, dintre care una explicația - înainte de a începe să scrie chiar interogare de bază, trebuie să vă cu atenție pentru a înțelege ce vrem să ajungem în cele din urmă. Mult noroc!

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

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