TietokoneetOhjelmointi

Vasen liittymään (SQL) - esimerkkinä yksityiskohtainen kuvaus, käyttö virheestä

Joka todellista relaatiotietokanta, kaikki tieto jaetaan erillisessä taulukossa. Useissa taulukoissa esitetään tiedonannossa järjestelmässä keskenään. Kuitenkin avulla SQL-kyselyjä on täysin mahdollista laittaa linkin tietojen välillä, ei upotettu piirissä. Tämä tehdään suorittamalla liittyä yhteys, jonka avulla voit rakentaa suhdetta minkä tahansa määrän taulukoita, ja jopa liittää näennäisesti erilaisia tietoja.

Tämä artikkeli puhua erityisesti vasemmalle ulkoliitos. Ennen siirtymistä kuvaus tämäntyyppisen yhteyden, lisää joissakin tietokantataulukoihin.

Valmistelee tarvittavat taulukot

Esimerkiksi meidän tietokantaan on tietoja ihmisistä ja heidän kiinteistöihin. Yhteenveto perustuu kolme taulukkoa: Peoples (ihmiset), Realty (kiinteistöt), Realty_peoples (taulukko suhteita, ihmiset mitä omaisuus kuuluu). Oletetaan seuraavat tallennetut tiedot taulukoissa ihmisten:

Peoples

id

L_name

F_name

Middle_name

syntymäpäivä

1

Ivanova

Daria

B.

16.07.2000

2

Pugin

Vladislav

Nikolaevich

01.29.1986

3

EvgeniN

Alexander

Federovich

04.30.1964

4

Annina

rakkaus

P.

31.12.1989

5

Gerasimovsky

toivo

P.

14.03.1992

6

Gerasimovsky

Oleg

Albertovich

01.29.1985

7

Sukhanovskaya

tuomaristo

A.

09.25.1976

8

Sukhanovskaya

Julia

Y.

01.10.2001

Kiinteistöt:

Realty

id

osoite

1

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

2

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

3

Arkangelin alue, Severodvinsk, st. Lenin, d. 134, q. 85

4

Arkangelin alue, Novodvinsk, ul. Proletarshaya, d. 16, q. 137

5

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

Suhteet ihmistä - omaisuus:

Realty_peoples

id_peoples

id_realty

tyyppi

7

3

Yhteensä yhteisen omistusoikeuden

8

3

Yhteensä yhteisen omistusoikeuden

3

5

omaisuus

7

1

omaisuus

5

4

yhteisten osien

6

4

yhteisten osien

Vasemmalle liittymään (SQL) - Kuvaus

Vasen yhdisteellä on seuraava syntaksi:

Table_A LEFT JOIN table_B [{ON predikaatti} | {KÄYTTÖ spisok_ kanssa tolbtsov}]

Ja kaavamaisesti seuraavasti:

Ja tämä ilmaus on käännetty "Valitse kaikki poikkeuksetta linja taulukossa A Taulukko B näyttää vain vastaavia rivejä predikaatin. Jos taulukko havaittiin merkkijono taulukossa paria A, täytä sitten tuloksena sarakkeet Null - arvot".

Useimmiten, kun vasen yhteys on merkitty käyttäen käytetään vain silloin, kun sarakenimet, joka on suunniteltu tekemään yhteyden ovat samat.

Vasen liittyä - esimerkkejä käytöstä

Kun yhteys vasemman näemme, kaikki ihmiset listasta jos Peoples omaisuutta. Voit tehdä tämän vasemmassa liittyä SQL esimerkki:

VALINTA Peoples. *, Realty_peoples.id_realty, Realty_peoples.type

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

Seuraavin tuloksin:

Query1

id

L_name

F_name

Middle_name

syntymäpäivä

id_realty

tyyppi

1

Ivanova

Daria

B.

16.07.2000

2

Pugin

Vladislav

Nikolaevich

01.29.1986

3

EvgeniN

Alexander

Federovich

04.30.1964

5

omaisuus

4

Annina

rakkaus

P.

31.12.1989

5

Gerasimovsky

toivo

P.

14.03.1992

4

yhteisten osien

6

Gerasimovsky

Oleg

Albertovich

01.29.1985

4

yhteisten osien

7

Sukhanovskaya

tuomaristo

A.

09.25.1976

1

omaisuus

7

Sukhanovskaya

tuomaristo

A.

09.25.1976

3

Yhteensä yhteisen omistusoikeuden

8

Sukhanovskaya

Julia

Y.

01.10.2001

3

Yhteensä yhteisen omistusoikeuden

Kuten näemme, Ivanova Darya Pugin Vladislav ja Anninoy Lyubovi Ei rekisteröityneitä kiinteistöjä oikeuksia.

Ja mitä olemme saaneet, käyttäen sisäliitos sisäliitos? Kuten tiedätte, se sulkee ei-matching rivejä, joten kolme meidän lopullinen näyte olisi yksinkertaisesti laskenut:

Query1

id

L_name

F_name

Middle_name

syntymäpäivä

id_realty

tyyppi

3

EvgeniN

Alexander

Federovich

04.30.1964

5

omaisuus

5

Gerasimovsky

toivo

P.

14.03.1992

4

yhteisten osien

6

Gerasimovsky

Oleg

Albertovich

01.29.1985

4

yhteisten osien

7

Sukhanovskaya

tuomaristo

A.

09.25.1976

1

omaisuus

7

Sukhanovskaya

tuomaristo

A.

09.25.1976

3

Yhteensä yhteisen omistusoikeuden

8

Sukhanovskaya

Julia

Y.

01.10.2001

3

Yhteensä yhteisen omistusoikeuden

Näyttäisi siltä, että toinen versio myös täyttää meidän ongelma. Jos kuitenkin alamme kiinnittää toisen, ja toinen pöytä, kolme ihmistä tuloksesta jo peruuttamattomasti mennyt. Siksi käytännössä kun yhdistetään useita pöytiä paljon useammin käytetty vasen ja oikea yhteys kuin Sisä liittyä.

Etsii edelleen vasemmalle liittymään sql esimerkkejä. Kiinnitä pöytä osoitteet meidän taloa:

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

FROM Peoples

LEFT JOIN Realty_peoples ON Peoples.id = Realty_peoples.id_peoples

LEFT JOIN Realty ON Realty.id = Realty_peoples.id_realty

Nyt saamme paitsi sellaista lakia, vaan myös osoitteen kiinteistön:

Query1

id

L_name

F_name

Middle_name

syntymäpäivä

id_realty

tyyppi

osoite

1

Ivanova

Daria

B.

16.07.2000

2

Pugin

Vladislav

Nikolaevich

01.29.1986

3

EvgeniN

Alexander

Federovich

04.30.1964

5

omaisuus

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

4

Annina

rakkaus

P.

31.12.1989

5

Gerasimovsky

toivo

P.

14.03.1992

4

yhteisten osien

Arkangelin alue, Novodvinsk, ul. Proletarshaya, d. 16, q. 137

6

Gerasimovsky

Oleg

Albertovich

01.29.1985

4

yhteisten osien

Arkangelin alue, Novodvinsk, ul. Proletarshaya, d. 16, q. 137

7

Sukhanovskaya

tuomaristo

A.

09.25.1976

3

Yhteensä yhteisen omistusoikeuden

Arkangelin alue, Severodvinsk, st. Lenin, d. 134, q. 85

7

Sukhanovskaya

tuomaristo

A.

09.25.1976

1

omaisuus

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

8

Sukhanovskaya

Julia

Y.

01.10.2001

3

Yhteensä yhteisen omistusoikeuden

Arkangelin alue, Severodvinsk, st. Lenin, d. 134, q. 85

Vasen liittyä - tyypillinen käyttö virhe: virheellinen menettely pöytä

Basic virheitä vasemmalla ulkoliitos pöydät, kaksi:

  1. Oikein valitut järjestystä taulukoita, joista tietoja oli kadonnut.
  2. Missä virheet käytettäessä kyselyn liittyä taulukoita.

Harkitse ensimmäinen virhe. Ennen päätöstä mitään ongelmaa olisi selvää, että mitä haluamme saada lopulta. Tässä esimerkissä edellä, otimme jokainen yksi niistä ihmisistä, mutta täysin menetetty tiedot objektin numerolla 2, jonka omistaja ei löytynyt.

Jos muutimme taulukoissa kyselyn paikoin, ja alkaisi «... Julkaisija Realty vasemmalle liittymään Peoples ...» jokin ominaisuus, emme olisi menettäneet, et kertoa ihmisille.

Mutta älä pelkää vasemman yhteyden, siirtyä koko ulkoinen, joka sisältyy tuloksiin ja vastaavia, eikä sovituslinjojen.

Onhan näytteen tilavuus on usein hyvin suuri, ja lisäkapasiteettia on oikeastaan turha. Tärkeintä - selvittää, mitä haluat saada tuloksen: kaikkien ihmisten luettelon niiden käytettävissä omaisuuden tai koko kiinteistön listan omistajineen (jos on).

Vasen liittyä - tyypillinen käyttö virhe: Pyyntö on oikea asetettaessa olosuhteet Missä

Toinen virhe liittyy myös tietojen menetyksen, ja eivät ole aina välittömästi nähtävissä.

Palataan kyselyyn kun lähdimme yhteyksillä vastaanotetut tiedot kaikille ihmisille ja nykyisiä omaisuutta. Muista seuraava vasen liittyä sql esimerkki:

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

Oletetaan haluamme selvittää pyynnön ja ei tulosta dataa, jossa tyyppi lain - "Property". Jos me yksinkertaisesti liittää, käyttämällä vasenta liittyä sql, esimerkkinä seuraavan ehdon:

...

Missä tyyppi <> "Property"

menetämme tietoja henkilöiden, joilla ei ole omaisuutta, koska nolla Nolla ei vertailla seuraavasti:

Query1

id

L_name

F_name

Middle_name

syntymäpäivä

id_realty

tyyppi

5

Gerasimovsky

toivo

P.

14.03.1992

4

yhteisten osien

6

Gerasimovsky

Oleg

Albertovich

01.29.1985

4

yhteisten osien

7

Sukhanovskaya

tuomaristo

A.

09.25.1976

3

Yhteensä yhteisen omistusoikeuden

8

Sukhanovskaya

Julia

Y.

01.10.2001

3

Yhteensä yhteisen omistusoikeuden

Estää virheitä tapahtuu tästä syystä, se on parasta asettaa valinnan tila heti yhteyden. Ehdotamme harkita seuraavia vasemmalla liittyä sql esimerkki.

VALINTA Peoples. *, Realty_peoples.id_realty, Realty_peoples.type

FROM Peoples

LEFT JOIN Realty_peoples ON (Peoples.id = Realty_peoples.id_peoples ja tyyppi <> "Property")

Tulos on seuraava:

Query1

id

L_name

F_name

Middle_name

syntymäpäivä

id_realty

tyyppi

1

Ivanova

Daria

B.

16.07.2000

2

Pugin

Vladislav

Nikolaevich

01.29.1986

3

EvgeniN

Alexander

Federovich

04.30.1964

4

Annina

rakkaus

P.

31.12.1989

5

Gerasimovsky

toivo

P.

14.03.1992

4

yhteisten osien

6

Gerasimovsky

Oleg

Albertovich

01.29.1985

4

yhteisten osien

7

Sukhanovskaya

tuomaristo

A.

09.25.1976

3

Yhteensä yhteisen omistusoikeuden

8

Sukhanovskaya

Julia

Y.

01.10.2001

3

Yhteensä yhteisen omistusoikeuden

Siten seuraamalla yksinkertaisia vasemmalle liittymään sql esimerkiksi saimme luettelon kaikista ihmisistä, liikkuvat edelleen, yksi näistä ominaisuuksista uutta pääomaa / yhteisomistusta.

Johtopäätöksenä haluaisin korostaa jälleen kerran, että näyte tietoja tietokannasta on otettava vastuullisesti. Monet vivahteita avattiin edessämme vasen liittyä sql yksinkertainen esimerkki, selitys joista yksi - ennen kuin alkaa kirjoittamaan edes perus kyselyn, sinun täytyy huolellisesti ymmärtää, mitä haluamme saada lopulta. Onnea!

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

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