SzámítógépekProgramozás

Bal csatlakozni (SQL) - Példaként a részletes leírását, használata a hiba

Mindenesetre igazi relációs adatbázis valamennyi információt elosztva külön táblázatban. Sok a táblázatok mutatjuk be a kommunikációs rendszer egymással. Azonban a segítségével SQL lekérdezések nagyon is lehetséges, hogy egy linket az adatok között, nincs beágyazva a kör. Ez úgy történik, hogy elvégezzük a csatlakozni kapcsolat, amely lehetővé teszi, hogy építsenek egy kapcsolat bármely számú asztallal, és még kapcsolódni a látszólag információkat.

Ez a cikk fog beszélni konkrétan a bal külső csatlakozni. Mielőtt a leírása ez a fajta kapcsolat, adjunk hozzá néhány adatbázis táblákat.

Elkészíti a szükséges táblák

Például az adatbázisunkban, akkor információkat az emberek és azok ingatlan. Összefoglaló alapján három asztal: Peoples (fő), Realty (ingatlan), Realty_peoples (asztali kapcsolatok, az emberek, akik abból, amit ingatlan tartozik). Tételezzük fel a következő adatokat tárolja a táblázatokban az emberek:

Peoples

id

L_name

F_name

Middle_name

születésnap

1

Ivanova

Daria

B.

2000/07/16

2

Pugin

Vladislav

Nyikolajevics

1986/01/29

3

Evgenin

Alexander

Federovich

1964/04/30

4

annina

szerelem

P.

1989/12/31

5

Gerasimovsky

remény

P.

1992/03/14

6

Gerasimovsky

Oleg

Albertovich

1985/01/29

7

Sukhanovskaya

zsűri

A.

1976/09/25

8

Sukhanovskaya

Julia

Y.

2001/01/10

Ingatlan:

ingatlan

id

cím

1

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

2

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

3

Arhangelszk régióban, Severodvinsk, st. Lenin, d. 134, q. 85

4

Arkhangelsk régió, Novodvinsk, ul. Proletarshaya, d. 16, q. 137

5

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

Kapcsolatok az emberek - ingatlan:

Realty_peoples

id_peoples

id_realty

típus

7

3

Összesen közös tulajdon

8

3

Összesen közös tulajdon

3

5

tulajdon

7

1

tulajdon

5

4

közös részek

6

4

közös részek

Bal csatlakozni (SQL) - Leírás

Bal vegyület a következő szintaxist:

Table_A BAL REGISZTRÁCIÓ table_B [{ON predikátum} | {USING spisok_ a tolbtsov}]

És vázlatosan az alábbiak szerint:

És ez a kifejezés fordítása „Select All, kivétel nélkül, a vonal a táblázatban és B táblázat megjeleníteni csak a megfelelő sorokat az állítmány. Ha a tábla találtak a húr táblázatban párok részére, akkor töltse ki a kapott oszlopok Null - értékek”.

Leggyakrabban, amikor a bal kapcsolatot jelzi BE, használjuk csak az oszlop nevét, amely a tervek szerint a kapcsolatot azonos.

Bal csatlakozni - példákkal illusztrálva

A kapcsolat a bal látjuk, az egész nép a listáról, ha ott Peoples tulajdon. Ehhez a bal csatlakozni SQL lekérdezés például:

SELECT népek. *, Realty_peoples.id_realty, Realty_peoples.type

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

Az alábbi eredményeket:

Query1 elemet

id

L_name

F_name

Middle_name

születésnap

id_realty

típus

1

Ivanova

Daria

B.

2000/07/16

2

Pugin

Vladislav

Nyikolajevics

1986/01/29

3

Evgenin

Alexander

Federovich

1964/04/30

5

tulajdon

4

annina

szerelem

P.

1989/12/31

5

Gerasimovsky

remény

P.

1992/03/14

4

közös részek

6

Gerasimovsky

Oleg

Albertovich

1985/01/29

4

közös részek

7

Sukhanovskaya

zsűri

A.

1976/09/25

1

tulajdon

7

Sukhanovskaya

zsűri

A.

1976/09/25

3

Összesen közös tulajdon

8

Sukhanovskaya

Julia

Y.

2001/01/10

3

Összesen közös tulajdon

Mint látjuk, Ivanova Darya Pugin Vladislav és Anninoy Lyubovi nincs regisztrált ingatlan jogokat.

És mi lenne kaptunk, amihez inner join Belső csatlakozni? Mint tudja, ez kizárja a nem egyező sorokat, hogy a három közül a végső mintát egyszerűen kikerülsz:

Query1 elemet

id

L_name

F_name

Middle_name

születésnap

id_realty

típus

3

Evgenin

Alexander

Federovich

1964/04/30

5

tulajdon

5

Gerasimovsky

remény

P.

1992/03/14

4

közös részek

6

Gerasimovsky

Oleg

Albertovich

1985/01/29

4

közös részek

7

Sukhanovskaya

zsűri

A.

1976/09/25

1

tulajdon

7

Sukhanovskaya

zsűri

A.

1976/09/25

3

Összesen közös tulajdon

8

Sukhanovskaya

Julia

Y.

2001/01/10

3

Összesen közös tulajdon

Úgy tűnik, hogy a második verzió is megfelel a feltételeknek a problémát. Azonban, ha elkezdjük csatolni egy másik, és egy másik asztal, három ember az eredmény már visszavonhatatlanul eltűnt. Ezért a gyakorlatban, amikor több különböző táblák sokkal gyakrabban használják a bal és jobb kapcsolat, mint belső csatlakozhat.

Továbbra is keressük a bal csatlakozni sql példákat. Csatolása egy asztal címét házaink:

SELECT népek. *, Realty_peoples.id_realty, Realty_peoples.type, Realty.address

AZ Peoples

LEFT JOIN Realty_peoples ON Peoples.id = Realty_peoples.id_peoples

LEFT JOIN Realty ON Realty.id = Realty_peoples.id_realty

Most kap nem csak egyfajta törvény, hanem a címe ingatlan:

Query1 elemet

id

L_name

F_name

Middle_name

születésnap

id_realty

típus

cím

1

Ivanova

Daria

B.

2000/07/16

2

Pugin

Vladislav

Nyikolajevics

1986/01/29

3

Evgenin

Alexander

Federovich

1964/04/30

5

tulajdon

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

4

annina

szerelem

P.

1989/12/31

5

Gerasimovsky

remény

P.

1992/03/14

4

közös részek

Arkhangelsk régió, Novodvinsk, ul. Proletarshaya, d. 16, q. 137

6

Gerasimovsky

Oleg

Albertovich

1985/01/29

4

közös részek

Arkhangelsk régió, Novodvinsk, ul. Proletarshaya, d. 16, q. 137

7

Sukhanovskaya

zsűri

A.

1976/09/25

3

Összesen közös tulajdon

Arhangelszk régióban, Severodvinsk, st. Lenin, d. 134, q. 85

7

Sukhanovskaya

zsűri

A.

1976/09/25

1

tulajdon

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

8

Sukhanovskaya

Julia

Y.

2001/01/10

3

Összesen közös tulajdon

Arhangelszk régióban, Severodvinsk, st. Lenin, d. 134, q. 85

Left join - tipikus felhasználása hiba: érvénytelen eljárás asztal

Alapvető hiba, a bal külső táblákat, két:

  1. Helyesen választott sorrendben táblákat, melyek adatai elvesztek.
  2. Amennyiben hibát, ha egy lekérdezés táblákat.

Vegyük az első hiba. Döntést megelőzően a bármilyen probléma világosan meg kell érteni, hogy mit akarunk, hogy a végén. Ebben a fenti példában vettünk minden egyes ember az ember, de teljesen elvesztette az információkat a tárgyat a 2-es szám, amelynek tulajdonosa nem található.

Ha mozgott a táblázatok a lekérdezés néhány helyen, és kezdeném «... tól Realty bal csatlakozzon Peoples ...» bármelyike tulajdon, nem lett volna elveszett, akkor nem mondja az emberek.

De ne ijedj meg a bal kapcsolat, ha teljes külső, amely tartalmazza az eredményeket és a megfelelő, és nem a megfelelő sorokat.

Végtére is, a minta térfogata gyakran nagyon nagy, és az extra adatok valójában haszontalan. A legfontosabb dolog -, hogy kitaláljuk, mit szeretnénk, hogy egy eredmény: minden ember egy listát a rendelkezésre álló ingatlan, vagy az egész ingatlan listát a tulajdonosok (ha van ilyen).

Left join - tipikus felhasználása hiba: kérés helyes beállításakor a feltételeket a Hol

A második hiba is jár adatvesztéssel, és nem mindig azonnal nyilvánvaló.

Térjünk vissza a lekérdezés amikor elhagytuk kapcsolatokon keresztül kapott adatokat minden ember számára, és a meglévő ingatlan. Ne feledje, a következő a bal csatlakozni SQL példa:

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

Tegyük fel, hogy szeretnénk tisztázni a kérést, és nem ad az adatokat, ha az a fajta gyakorlat - „tulajdon”. Ha egyszerűen hozzáfűzi, segítségével a bal csatlakozni sql, egy példa a következő feltételt:

...

Amennyiben típus <> „tulajdon”

akkor el fogja veszíteni az adatokat, akiknek nincs tulajdon, mert a null érték Null nem hasonlították az alábbiak szerint:

Query1 elemet

id

L_name

F_name

Middle_name

születésnap

id_realty

típus

5

Gerasimovsky

remény

P.

1992/03/14

4

közös részek

6

Gerasimovsky

Oleg

Albertovich

1985/01/29

4

közös részek

7

Sukhanovskaya

zsűri

A.

1976/09/25

3

Összesen közös tulajdon

8

Sukhanovskaya

Julia

Y.

2001/01/10

3

Összesen közös tulajdon

Ahhoz, hogy hibák megelőzésére irányuló Emiatt a legjobb, ha a kiválasztás feltétele azonnal kapcsolatot. Javasoljuk, hogy vegye figyelembe a következő a bal csatlakozni SQL példa.

SELECT népek. *, Realty_peoples.id_realty, Realty_peoples.type

AZ Peoples

LEFT JOIN Realty_peoples ON (Peoples.id = Realty_peoples.id_peoples és típusa <> "tulajdon")

Az eredmény a következő lesz:

Query1 elemet

id

L_name

F_name

Middle_name

születésnap

id_realty

típus

1

Ivanova

Daria

B.

2000/07/16

2

Pugin

Vladislav

Nyikolajevics

1986/01/29

3

Evgenin

Alexander

Federovich

1964/04/30

4

annina

szerelem

P.

1989/12/31

5

Gerasimovsky

remény

P.

1992/03/14

4

közös részek

6

Gerasimovsky

Oleg

Albertovich

1985/01/29

4

közös részek

7

Sukhanovskaya

zsűri

A.

1976/09/25

3

Összesen közös tulajdon

8

Sukhanovskaya

Julia

Y.

2001/01/10

3

Összesen közös tulajdon

Így az alábbi egyszerű balra csatlakozzon sql például kaptunk egy listát az összes ember, egyre távolabb, az egyik ezek a tulajdonságok egy tőke / közös tulajdon.

A következtetést szeretnék ismételten hangsúlyozni, hogy a minta minden olyan információt az adatbázisból kell tenni felelősségteljesen. Sok árnyalatok megnyílt előttünk a bal csatlakozni sql egyszerű példát, magyarázattal, amely egy - mielőtt elkezdené írni még az alapvető kérdés, meg kell alaposan megérteni, hogy mit szeretnénk kapni a végén. Sok szerencsét!

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

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