KompjuteraProgramimi

Left bashkohen (SQL) - një shembull, përshkrim të detajuar, përdorimin e gabimit

Në çdo bazë të dhënash relacionale të vërtetë, i gjithë informacioni është shpërndarë në një tryezë të veçantë. Shumë nga tabelat janë të përcaktuara në skemën e komunikimit me njëri-tjetrin. Megjithatë, me ndihmën e SQL queries ajo është mjaft e mundur për të vënë një lidhje në mes të dhënave, jo të ngulitura në qark. Kjo është bërë duke kryer një lidhje të bashkuar, e cila ju lejon për të ndërtuar një marrëdhënie në mes çdo numër të tabelave, dhe madje edhe të lidhë informacionin në dukje të ndryshëm.

Ky artikull do të flasim në mënyrë specifike në lidhje e jashtme e majtë bashkohen. Para se të vazhdojmë me përshkrimin e këtij lloji të lidhjes, shtoni në disa tavolina bazës së të dhënave.

Përgatitjen e tabelave nevojshme

Për shembull, në database tonë, nuk ka informacion në lidhje me njerëzit dhe pasurive të tyre të vërtetë. Përmbledhje bazuar në tre tavolina: Peoples (njerëz), Realty (pasuri të patundshme), Realty_peoples (marrëdhëniet tavolinë, njerëzit që nga ajo pronë i takon). Supozojmë të dhënat e mëposhtme të ruajtura në tabelat e njerëzve:

Peoples

id

L_name

F_name

Middle_name

ditëlindje

1

Ivanova

Daria

B.

2000/07/16

2

Pugin

Vladislav

Nikolaevich

1986/01/29

3

Evgenin

alexander

Federovich

1964/04/30

4

Annina

dashuri

P.

1989/12/31

5

Gerasimovsky

shpresoj

P.

1992/03/14

6

Gerasimovsky

Oleg

Albertovich

1985/01/29

7

Sukhanovskaya

juri

A.

1976/09/25

8

Sukhanovskaya

julia

Y.

2001/01/10

të pasurive të patundshme:

pasuri e patundshme

id

adresë

1

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

2

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

3

rajoni Arkhangelsk, Severodvinsk, st. Lenini, d. 134, q. 85

4

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

5

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

Marrëdhëniet njerëzit - Pronës:

Realty_peoples

id_peoples

id_realty

lloj

7

3

Pronësia Total përbashkët

8

3

Pronësia Total përbashkët

3

5

pronë

7

1

pronë

5

4

pjesët e përbashkëta

6

4

pjesët e përbashkëta

Majtas bashkohen (SQL) - Përshkrimi

kompleks la ka sintaksë e mëposhtme:

Table_A LEFT JOIN table_B [{ON penale kryesore} | {PËRDORIMI spisok_ me tolbtsov}]

Dhe skematike si më poshtë:

Dhe kjo shprehje përkthehet si "Zgjidh gjithë, pa përjashtim, linjë e Tabela A dhe Tabelën B të shfaqur vetëm rreshtat matching e kallëzues. Nëse tryezë u gjet në tabelën string për çifte një, pastaj plotësoni shtyllat rezultojnë Null - vlerat ".

Më shpesh, kur lidhja e la tregohet në, duke përdorur përdoret vetëm kur emrat e kolonave, e cila është planifikuar për të bërë lidhjen janë të njëjta.

Left bashkohet - shembuj të përdorimit

Me lidhjen e majtë ne mund të shohim, tërë populli, nga lista e në qoftë se nuk Peoples pronës. Për ta bërë këtë në të majtë të bashkohet shembull sql query:

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

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

Me rezultatet e mëposhtme:

Query1

id

L_name

F_name

Middle_name

ditëlindje

id_realty

lloj

1

Ivanova

Daria

B.

2000/07/16

2

Pugin

Vladislav

Nikolaevich

1986/01/29

3

Evgenin

alexander

Federovich

1964/04/30

5

pronë

4

Annina

dashuri

P.

1989/12/31

5

Gerasimovsky

shpresoj

P.

1992/03/14

4

pjesët e përbashkëta

6

Gerasimovsky

Oleg

Albertovich

1985/01/29

4

pjesët e përbashkëta

7

Sukhanovskaya

juri

A.

1976/09/25

1

pronë

7

Sukhanovskaya

juri

A.

1976/09/25

3

Pronësia Total përbashkët

8

Sukhanovskaya

julia

Y.

2001/01/10

3

Pronësia Total përbashkët

Siç e shohim, Ivanova Darya Pugin Vladislav dhe Anninoy Lyubovi No regjistruar drejtave të pasurive të patundshme.

Dhe çfarë do të kemi marrë, duke përdorur një brendshme të bashkohen Inner bashkohen? Siç e dini, ai përjashton jo-matching rreshtave, kështu që tre nga të mostrës tonë të fundit thjesht do të hiqet:

Query1

id

L_name

F_name

Middle_name

ditëlindje

id_realty

lloj

3

Evgenin

alexander

Federovich

1964/04/30

5

pronë

5

Gerasimovsky

shpresoj

P.

1992/03/14

4

pjesët e përbashkëta

6

Gerasimovsky

Oleg

Albertovich

1985/01/29

4

pjesët e përbashkëta

7

Sukhanovskaya

juri

A.

1976/09/25

1

pronë

7

Sukhanovskaya

juri

A.

1976/09/25

3

Pronësia Total përbashkët

8

Sukhanovskaya

julia

Y.

2001/01/10

3

Pronësia Total përbashkët

Ajo do të duket se versioni i dytë gjithashtu i plotëson kushtet e problemit tonë. Megjithatë, në qoftë se ne fillojmë të bashkëngjitni në një tjetër, dhe një tjetër tavolinë, tre persona nga rezultati tashmë të zhdukur pakthyeshme. Prandaj, në praktikë, kur kombinuar tavolina të shumta përdorur shumë më shpesh Majtas dhe Djathtas lidhjes se Inner bashkohen.

Do të vazhdojë të shikojë në të majtë bashkohen shembuj SQL. Bashkangjit një tabelë me adresat e shtëpive tona:

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

nga popujt

LEFT JOIN Realty_peoples ON Peoples.id = Realty_peoples.id_peoples

LEFT JOIN Realty ON Realty.id = Realty_peoples.id_realty

Tani ne të merrni jo vetëm një lloj të ligjit, por edhe adresën e pasurive të patundshme:

Query1

id

L_name

F_name

Middle_name

ditëlindje

id_realty

lloj

adresë

1

Ivanova

Daria

B.

2000/07/16

2

Pugin

Vladislav

Nikolaevich

1986/01/29

3

Evgenin

alexander

Federovich

1964/04/30

5

pronë

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

4

Annina

dashuri

P.

1989/12/31

5

Gerasimovsky

shpresoj

P.

1992/03/14

4

pjesët e përbashkëta

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

6

Gerasimovsky

Oleg

Albertovich

1985/01/29

4

pjesët e përbashkëta

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

7

Sukhanovskaya

juri

A.

1976/09/25

3

Pronësia Total përbashkët

rajoni Arkhangelsk, Severodvinsk, st. Lenini, d. 134, q. 85

7

Sukhanovskaya

juri

A.

1976/09/25

1

pronë

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

8

Sukhanovskaya

julia

Y.

2001/01/10

3

Pronësia Total përbashkët

rajoni Arkhangelsk, Severodvinsk, st. Lenini, d. 134, q. 85

Left bashkohet - përdorimin tipik i gabimit: pavlefshëm tabelën e procedurës

gabimet themelore e bëra në e jashtme e majtë bashkohen tavolina, dy:

  1. Korrekt zgjedhur rendin e tabelave për të cilin kishte humbur të dhënave.
  2. Ku gabimet kur duke përdorur një pyetje me të bashkohen tavolina.

Konsideroni gabimin e parë. Para vendimit të ndonjë problemi duhet të kuptohet qartë se ajo që ne duam që të merrni në fund. Në këtë shembull e mësipërm, ne e mori çdo një të vetme e popullit, por krejtësisht të humbur të dhënat në lidhje me objektin nën numrin 2, pronari i të cilit nuk është gjetur.

Nëse kemi lëvizur tabelat në një pyetje në disa vende, dhe do të fillojë me «... Nga Realty majta bashkuar popujt ...» çdo një pronë, nuk do të kishim humbur, ju nuk do të thoni në lidhje me njerëzit.

Por nuk do të jetë i frikësuar e lidhjes majtë, të kaluar në të plotë të jashtme, e cila është përfshirë në rezultatet dhe të përputhen dhe nuk linjat përputhen.

Në fund të fundit, vëllimi i mostrës është shpesh shumë i madh, dhe të dhënat shtesë në fakt është e padobishme. Gjëja kryesore - për të kuptoj se çfarë ju doni të merrni një rezultat: të gjithë njerëzve me një listë të pronës së tyre në dispozicion ose të gjithë listën e pronës me pronarët e tyre (nëse ka).

Left bashkohet - përdorimin tipik i gabimit: Kërkesa është e saktë kur vendosjen e kushteve në ku

Gabimi i dytë është e lidhur edhe me humbjen e të dhënave, dhe nuk janë gjithmonë menjëherë të dukshme.

Le të kthehemi në pyetjen kur u larguam nëpërmjet lidhjeve të marrë të dhëna për të gjithë njerëzit dhe pronën e tyre ekzistuese. Mos harroni në vijim me të majtë bashkohen shembull sql:

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

Supozoni se ne duam për të sqaruar kërkesën dhe nuk e prodhimit të të dhënave, ku lloji i ligjit - "Pronë". Në qoftë se ne thjesht append, duke përdorur la bashkohet SQL, një shembull i gjendjes në vijim:

...

Ku type <> "Pronë"

Ne do të humbasin të dhënat për njerëzit që nuk kanë pronë, sepse Null vlera null nuk është krahasuar si më poshtë:

Query1

id

L_name

F_name

Middle_name

ditëlindje

id_realty

lloj

5

Gerasimovsky

shpresoj

P.

1992/03/14

4

pjesët e përbashkëta

6

Gerasimovsky

Oleg

Albertovich

1985/01/29

4

pjesët e përbashkëta

7

Sukhanovskaya

juri

A.

1976/09/25

3

Pronësia Total përbashkët

8

Sukhanovskaya

julia

Y.

2001/01/10

3

Pronësia Total përbashkët

Për të parandaluar gabimet ndodhin për këtë arsye, ajo është e mirë për të vendosur gjendjen e përzgjedhjes menjëherë pas lidhjes. Ne sugjerojmë të marrin në konsideratë në vijim me të majtë bashkohen shembull sql.

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

nga popujt

LEFT JOIN Realty_peoples ON (Peoples.id = Realty_peoples.id_peoples dhe tipi i <> "Prona")

Rezultati do të jetë si më poshtë:

Query1

id

L_name

F_name

Middle_name

ditëlindje

id_realty

lloj

1

Ivanova

Daria

B.

2000/07/16

2

Pugin

Vladislav

Nikolaevich

1986/01/29

3

Evgenin

alexander

Federovich

1964/04/30

4

Annina

dashuri

P.

1989/12/31

5

Gerasimovsky

shpresoj

P.

1992/03/14

4

pjesët e përbashkëta

6

Gerasimovsky

Oleg

Albertovich

1985/01/29

4

pjesët e përbashkëta

7

Sukhanovskaya

juri

A.

1976/09/25

3

Pronësia Total përbashkët

8

Sukhanovskaya

julia

Y.

2001/01/10

3

Pronësia Total përbashkët

Kështu, duke ndjekur të thjeshtë në të majtë bashkohen shembull sql, ne kemi marrë një listë të të gjithë popullit, duke lëvizur më tej, një prej këtyre pronave në një të kapitalit / bashkëpronësi.

Si përfundim dua të theksoj edhe një herë se një mostër e çdo informacioni nga bazën e të dhënave duhet të merren me përgjegjësi. Shumë nuanca të hapura para nesh me të majtë bashkohen shembull sql thjeshtë, shpjegimi i cili një - para se të filloni të shkruani edhe themelore pyetje, ju duhet me kujdes për të kuptuar atë që ne duam që të merrni në fund. fat të mirë!

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

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