KomputilojProgramado

Maldekstra aliĝi (SQL) - ekzemplo, la detala priskribo, uzo de la eraro

En ĉiu reala rilata datumbazo, ĉiuj informoj estas distribuita sur aparta tablo. Multaj el la tabloj estas difinitaj en la komunikado skemo kun la alia. Tamen, kun la helpo de SQL pridemandojn estas tute eble por meti ligilon inter la datumoj, ne enigita en la cirkvito. Ĉi tiu estas farita plenumante aliĝi ligo, kiu ebligas al vi konstrui rilaton inter ajna nombro de tabloj, kaj eĉ konekti ŝajne malsimilaj informoj.

Ĉi tiu artikolo parolos specife pri la maldekstra ekstera aliĝi. Antaŭ procedanta al la priskribo de ĉi tiu tipo de rilato, aldoni en iu datumbazo tabloj.

Preparanta la necesajn tabloj

Ekzemple, en nia datumbazo, estas informoj pri homoj kaj ilia nemoveblaĵoj. Resumo surbaze de la tri tabloj: Popoloj (personoj), Realty (nemoveblaĵoj), Realty_peoples (tablo rilatoj, homoj kiuj de kio proprieto apartenas al). Supozu jenajn datumojn stokitaj en la tabloj de la popolo;

popoloj

id

L_name

F_name

Middle_name

naskiĝtago

1

Ivanova

Daria

B.

07/16/2000

2

Pugin

Vladislav

Nikolaevich

29.01.1986

3

Evgenin

Aleksandro

Federovich

04/30/1964

4

Annina

love

P.

31.12.1989

5

Gerasimovsky

esperas

P.

14.03.1992

6

Gerasimovsky

Oleg

Albertovich

01/29/1985

7

Sukhanovskaya

ĵurio

A.

09/25/1976

8

Sukhanovskaya

Julia

Y.

01.10.2001

Agentoj:

Realty

id

adreso

1

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

2

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

3

Arkhangelsk regiono, Severodvinsk, st. Lenin, d. 134, q. 85

4

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

5

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

Rilatoj homoj - propraĵo:

Realty_peoples

id_peoples

id_realty

tipo

7

3

Tuta artikon posedo

8

3

Tuta artikon posedo

3

5

propraĵo

7

1

propraĵo

5

4

komuna partoj

6

4

komuna partoj

Lasis aliĝi (SQL) - Priskribo

Lasis komponaĵo havas la sekvan sintakson:

Table_A LEFT JOIN table_B [{SUR predikato} | {Uzante spisok_ kun tolbtsov}]

Kaj esquemáticamente jene:

Kaj ĉi tiu esprimo estas tradukita kiel "Elektu ĉion senescepte linio de Tablo A kaj Tablo B por montri nur la trafaj vicoj de la predikato. Se la tablo troviĝis en la kordo tablon por paroj A, tiam plenigu la rezultanta kolumnoj Nula - valoroj ".

Plej ofte, kiam la maldekstra ligo estas indikita SUR, uzante estas uzata nur kiam la kolumno nomoj, kiu estas planita por fari la rilaton estas samaj.

Maldekstra aliĝi - ekzemploj de uzo

Kun la ligo de la maldekstra povas vidi, la tuta popolo el la listo se Popoloj proprieto. Por fari tion en la maldekstra aliĝi SQL query ekzemple:

ELEKTU Popoloj. *, Realty_peoples.id_realty, Realty_peoples.type

EL Popoloj LEFT JOIN Realty_peoples SUR Peoples.id = Realty_peoples.id_peoples;

Kun la sekvaj rezultoj:

Query1

id

L_name

F_name

Middle_name

naskiĝtago

id_realty

tipo

1

Ivanova

Daria

B.

07/16/2000

2

Pugin

Vladislav

Nikolaevich

29.01.1986

3

Evgenin

Aleksandro

Federovich

04/30/1964

5

propraĵo

4

Annina

love

P.

31.12.1989

5

Gerasimovsky

esperas

P.

14.03.1992

4

komuna partoj

6

Gerasimovsky

Oleg

Albertovich

01/29/1985

4

komuna partoj

7

Sukhanovskaya

ĵurio

A.

09/25/1976

1

propraĵo

7

Sukhanovskaya

ĵurio

A.

09/25/1976

3

Tuta artikon posedo

8

Sukhanovskaya

Julia

Y.

01.10.2001

3

Tuta artikon posedo

Kiel ni vidas, Ivanova Daria Pugin Vladislav kaj Anninoy Lyubovi Neniu registrita nemoveblaĵoj rajtoj.

Kaj kion ni ricevis, uzante internan aliĝi Interna aliĝi? Kiel vi scias, ĝi ekskludas ne-trafaj vicoj, do tri el niaj fina specimeno estus simple faligis:

Query1

id

L_name

F_name

Middle_name

naskiĝtago

id_realty

tipo

3

Evgenin

Aleksandro

Federovich

04/30/1964

5

propraĵo

5

Gerasimovsky

esperas

P.

14.03.1992

4

komuna partoj

6

Gerasimovsky

Oleg

Albertovich

01/29/1985

4

komuna partoj

7

Sukhanovskaya

ĵurio

A.

09/25/1976

1

propraĵo

7

Sukhanovskaya

ĵurio

A.

09/25/1976

3

Tuta artikon posedo

8

Sukhanovskaya

Julia

Y.

01.10.2001

3

Tuta artikon posedo

Ĝi similis ke la dua versio ankaŭ renkontas la kondiĉojn de nia problemo. Tamen, se ni komencas ligi sur alia, kaj alia tablo, tri homoj el la rezulto jam nerehaveble for. Sekve, praktike, al la kombini plurajn tablojn multe pli ofte uzata Maldekstra kaj dekstra ligo ol Interna aliĝi.

Daŭre rigardas maldekstren aliĝi SQL ekzemploj. Aligu tablo kun adresoj de niaj domoj;

ELEKTU Popoloj. *, Realty_peoples.id_realty, Realty_peoples.type, Realty.address

EL Popoloj

LEFT JOIN Realty_peoples SUR Peoples.id = Realty_peoples.id_peoples

LEFT JOIN Realty SUR Realty.id = Realty_peoples.id_realty

Nun ni akiras ne nur ia leĝo, sed ankaŭ la adreson de nemoveblaĵoj:

Query1

id

L_name

F_name

Middle_name

naskiĝtago

id_realty

tipo

adreso

1

Ivanova

Daria

B.

07/16/2000

2

Pugin

Vladislav

Nikolaevich

29.01.1986

3

Evgenin

Aleksandro

Federovich

04/30/1964

5

propraĵo

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

4

Annina

love

P.

31.12.1989

5

Gerasimovsky

esperas

P.

14.03.1992

4

komuna partoj

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

6

Gerasimovsky

Oleg

Albertovich

01/29/1985

4

komuna partoj

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

7

Sukhanovskaya

ĵurio

A.

09/25/1976

3

Tuta artikon posedo

Arkhangelsk regiono, Severodvinsk, st. Lenin, d. 134, q. 85

7

Sukhanovskaya

ĵurio

A.

09/25/1976

1

propraĵo

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

8

Sukhanovskaya

Julia

Y.

01.10.2001

3

Tuta artikon posedo

Arkhangelsk regiono, Severodvinsk, st. Lenin, d. 134, q. 85

Maldekstra aliĝi - la tipa uzo de eraro: nevalida procedo tablo

Bazaj erarojn faritaj en la maldekstra ekstera aliĝi tablojn, du:

  1. Ĝuste elektis la ordon de tabloj por kiu datumoj estis perdita.
  2. Kie eraroj uzinte serĉvorto kun aliĝi tablojn.

Konsideru unua eraro. Antaŭ la decido de ajna problemo devus esti klare komprenis, ke tio, kion ni volas esti en la fino. En ĉi tiu ekzemplo pli supre, ni prenis ĉiu ununura unu el la personoj, sed tute perdis la informon pri la objekto sub la numeron 2, kies posedanto ne troviĝis.

Se ni movis la tabloj en konsulto en iuj lokoj, kaj komencus kun «... De Realty lasis aliĝi Popoloj ...» iu propraĵo, ni ne perdis, vi ne diru pri homoj.

Sed ne timu de la maldekstra ligo, ŝanĝi al plena ekstera, kiu estas inkluzivita en la rezultoj kaj la trafaj, ne la trafaj linioj.

Ja la volumo de specimeno estas ofte tre grandaj, kaj ekstra datumo fakte senutila. La ĉefa afero - por eltrovi, kion vi volas rezulto: el ĉiuj homoj kun listo de siaj disponeblaj proprieto aŭ la tuta posedaĵo listo kun iliaj posedantoj (se entute).

Maldekstra aliĝi - la tipa uzo de eraro: Peto pravas kiam fiksante la kondiĉojn en la Kie

La dua eraro estas ankaŭ asociita kun perdo de datumoj, kaj ne ĉiam tuj evidenta.

Ni reiru al la pridemando kiam ni forlasis pere ligojn ricevis datumojn por la tuta popolo kaj iliaj ekzistantaj proprieto. Memoru la sekvajn per maldekstra aliĝi SQL ekzemple:

EL Popoloj LEFT JOIN Realty_peoples SUR Peoples.id = Realty_peoples.id_peoples;

Supozu ni volas klarigi la peton kaj ne eligo la datumoj, kie la tipo de leĝo - "Proprieto". Se ni simple postglui, Uzante dekstrajn aliĝi SQL, ekzemplo de la sekva kondiĉo:

...

Kie tipo <> "Proprieto"

ni perdos la datumojn sur personoj kiuj ne havas propraĵo, ĉar la nula valoro Nula ne komparis jene:

Query1

id

L_name

F_name

Middle_name

naskiĝtago

id_realty

tipo

5

Gerasimovsky

esperas

P.

14.03.1992

4

komuna partoj

6

Gerasimovsky

Oleg

Albertovich

01/29/1985

4

komuna partoj

7

Sukhanovskaya

ĵurio

A.

09/25/1976

3

Tuta artikon posedo

8

Sukhanovskaya

Julia

Y.

01.10.2001

3

Tuta artikon posedo

Por malhelpi eraroj de okazanta por tio, ĝi estas bona por agordi la elekto kondiĉo tuj sur ligo. Ni sugestas konsideri la sekvajn per la maldekstra aliĝi SQL ekzemplo.

ELEKTU Popoloj. *, Realty_peoples.id_realty, Realty_peoples.type

EL Popoloj

LEFT JOIN Realty_peoples ON (Peoples.id = Realty_peoples.id_peoples KAJ tipo <> "Proprieto")

La rezulto estos la sekvaj:

Query1

id

L_name

F_name

Middle_name

naskiĝtago

id_realty

tipo

1

Ivanova

Daria

B.

07/16/2000

2

Pugin

Vladislav

Nikolaevich

29.01.1986

3

Evgenin

Aleksandro

Federovich

04/30/1964

4

Annina

love

P.

31.12.1989

5

Gerasimovsky

esperas

P.

14.03.1992

4

komuna partoj

6

Gerasimovsky

Oleg

Albertovich

01/29/1985

4

komuna partoj

7

Sukhanovskaya

ĵurio

A.

09/25/1976

3

Tuta artikon posedo

8

Sukhanovskaya

Julia

Y.

01.10.2001

3

Tuta artikon posedo

Tiel, sekvante la simpla maldekstren aliĝi SQL Ekzemple, ni ricevis liston de ĉiuj personoj, movante plu, unu el ĉi tiuj ecoj en egaleco / artikon proprieton.

Kiel konkludo mi volas substreki denove ke specimeno de ajna informojn el la datumbazo devas esti prenitaj respondece. Multaj nuancoj malfermiĝis antaŭ ni per maldekstra aliĝi SQL simpla ekzemplo, la ekspliko kiu unu - antaŭ vi komencos skribi eĉ bazaj serĉvorto, vi devas zorge por kompreni kion ni volas esti en la fino. Bonŝancon!

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

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