Számítógépek, Programozá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:
- Helyesen választott sorrendben táblákat, melyek adatai elvesztek.
- 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