Arvutid, Programmeerimine
Vasak liituda (SQL) - näiteks üksikasjalik kirjeldus, kasutamine vea
Igal tõeline relatsiooniline andmebaas, kõik andmed on jaotatud eraldi tabelis. Paljud tabelid on toodud kommunikatsioon skeemi üksteisega. Kuid abiga SQL päringuid see on täiesti võimalik panna seos andmete, mitte varjatud circuit. Seda tehakse sooritades liituda ühendus, mis võimaldab teil luua suhet laudu ja isegi ühendada näiliselt erinevad andmed.
See artikkel rääkida eelkõige vasakul välimine liituda. Enne kirjelduse seda tüüpi ühendus, lisada mõned andmebaasi tabeleid.
Ettevalmistused vajalikud tabelid
Näiteks meie andmebaasis on teavet inimeste ja nende kinnisvara. Kokkuvõte põhineb kolme tabelid: Peoples (inimesed), Realty (kinnisvara), Realty_peoples (tabel suhteid, kes, mida vara kuulub). Aluseks võetakse järgmised andmed salvestatakse tabelid inimesi:
Peoples | ||||
id | L_Name | F_Name | Middle_name | sünnipäev |
1 | Ivanova | Daria | B. | 2000/07/16 |
2 | Pugin | Vladislav | Nikolajevitš | 1986/01/29 |
3 | Evgenin | Alexander | Federovich | 1964/04/30 |
4 | Annina | armastus | P. | 31.12.1989 |
5 | Gerasimovsky | lootus | P. | 1992/03/14 |
6 | Gerasimovsky | Oleg | Albertovich | 1985/01/29 |
7 | Sukhanovskaya | žürii | A. | 1976/09/25 |
8 | Sukhanovskaya | Julia | Y. | 01.10.2001 |
Kinnisvara:
kinnisvara | |
id | aadress |
1 | Arkhangelsk, ul. Voroninit d. 7, kv.6 |
2 | Arkhangelsk, ul. Severodvinskaya, d. 84, q. 9 BR. 5 |
3 | Arhangelski oblasti, Severodvinsk, st. Lenin, d. 134, q. 85 |
4 | Arhangelski oblasti, Novodvinsk, ul. Proletarshaya, d. 16, q. 137 |
5 | Arkhangelsk, pl. Terekhina, d. 89, q. 13 |
Suhted inimesed - vara:
Realty_peoples | ||
id_peoples | id_realty | tüüp |
7 | 3 | Kokku ühisomandi |
8 | 3 | Kokku ühisomandi |
3 | 5 | vara |
7 | 1 | vara |
5 | 4 | ühine osad |
6 | 4 | ühine osad |
Vasak liituda (SQL) - Kirjeldus
Vasak ühendil on järgmine süntaks:
Table_A LEFT JOIN table_B [{ON predikaat} | {KASUTAMINE spisok_ koos tolbtsov}] |
Ja skemaatiliselt järgmiselt:
Ja see väljend on tõlgitud kui "Vali kõik, ilma eranditeta, rida tabelites A ja B, kuvatakse ainult sobitamise rida predikaat. Kui tabelis leiti string tabel paari A, siis täitke saadud veergu Null - väärtused ".
Enamasti, kui lahkus seoses on märgitud, kasutades kasutatakse ainult siis, kui veerunimedel, mis on kavas muuta ühendus on samad.
Vasak liituda - näiteid kasutamise
Ühendamisel vasakul näeme, kõik inimesed nimekirjast, kui seal Peoples vara. Selleks vasakul liituda SQL päringu näiteks:
VALI Peoples. * Realty_peoples.id_realty, Realty_peoples.type Rahvaid LEFT JOIN Realty_peoples ON Peoples.id = Realty_peoples.id_peoples; |
Järgmised tulemused:
Query1 | ||||||
id | L_Name | F_Name | Middle_name | sünnipäev | id_realty | tüüp |
1 | Ivanova | Daria | B. | 2000/07/16 | ||
2 | Pugin | Vladislav | Nikolajevitš | 1986/01/29 | ||
3 | Evgenin | Alexander | Federovich | 1964/04/30 | 5 | vara |
4 | Annina | armastus | P. | 31.12.1989 | ||
5 | Gerasimovsky | lootus | P. | 1992/03/14 | 4 | ühine osad |
6 | Gerasimovsky | Oleg | Albertovich | 1985/01/29 | 4 | ühine osad |
7 | Sukhanovskaya | žürii | A. | 1976/09/25 | 1 | vara |
7 | Sukhanovskaya | žürii | A. | 1976/09/25 | 3 | Kokku ühisomandi |
8 | Sukhanovskaya | Julia | Y. | 01.10.2001 | 3 | Kokku ühisomandi |
Nagu näeme, Ivanova Darya Pugin Vladislav ja Anninoy Lyubovi nr kinnistule õigusi.
Ja mis oleks me saanud, kasutades sisemise liituda Inner liituda? Nagu te teate, see välistab mittevastavad rida, nii kolm meie lõplik valim oleks lihtsalt langes:
Query1 | ||||||
id | L_Name | F_Name | Middle_name | sünnipäev | id_realty | tüüp |
3 | Evgenin | Alexander | Federovich | 1964/04/30 | 5 | vara |
5 | Gerasimovsky | lootus | P. | 1992/03/14 | 4 | ühine osad |
6 | Gerasimovsky | Oleg | Albertovich | 1985/01/29 | 4 | ühine osad |
7 | Sukhanovskaya | žürii | A. | 1976/09/25 | 1 | vara |
7 | Sukhanovskaya | žürii | A. | 1976/09/25 | 3 | Kokku ühisomandi |
8 | Sukhanovskaya | Julia | Y. | 01.10.2001 | 3 | Kokku ühisomandi |
Tundub, et teine versioon ka tingimustele vastavuse meie probleem. Siiski, kui hakkame lisama teise ja teises tabelis kolm inimest tulemus juba pöördumatult kadunud. Seetõttu praktikas kui kombineerides mitmeid tabeleid palju sagedamini kasutatakse vasakule ja paremale ühendus kui sisemine liituda.
Jätkab vaadata vasakule liituda SQL näiteid. Kinnitage tabeli aadresse meie maja:
VALI Peoples. * Realty_peoples.id_realty, Realty_peoples.type, Realty.address rahvaid VASAK LIITU Realty_peoples ON Peoples.id = Realty_peoples.id_peoples VASAK LIITU Realty ON Realty.id = Realty_peoples.id_realty |
Nüüd saame mitte ainult mingi õiguse, vaid ka aadressi kinnisvara:
Query1 | |||||||
id | L_Name | F_Name | Middle_name | sünnipäev | id_realty | tüüp | aadress |
1 | Ivanova | Daria | B. | 2000/07/16 | |||
2 | Pugin | Vladislav | Nikolajevitš | 1986/01/29 | |||
3 | Evgenin | Alexander | Federovich | 1964/04/30 | 5 | vara | Arkhangelsk, pl. Terekhina, d. 89, q. 13 |
4 | Annina | armastus | P. | 31.12.1989 | |||
5 | Gerasimovsky | lootus | P. | 1992/03/14 | 4 | ühine osad | Arhangelski oblasti, Novodvinsk, ul. Proletarshaya, d. 16, q. 137 |
6 | Gerasimovsky | Oleg | Albertovich | 1985/01/29 | 4 | ühine osad | Arhangelski oblasti, Novodvinsk, ul. Proletarshaya, d. 16, q. 137 |
7 | Sukhanovskaya | žürii | A. | 1976/09/25 | 3 | Kokku ühisomandi | Arhangelski oblasti, Severodvinsk, st. Lenin, d. 134, q. 85 |
7 | Sukhanovskaya | žürii | A. | 1976/09/25 | 1 | vara | Arkhangelsk, ul. Voroninit d. 7, kv.6 |
8 | Sukhanovskaya | Julia | Y. | 01.10.2001 | 3 | Kokku ühisomandi |
Arhangelski oblasti, Severodvinsk, st. Lenin, d. 134, q. 85 |
Vasak liituda - tüüpiline error: invalid korras tabelis
Basic tehtud vigu vasakul välimine liituda lauad, kaks:
- Õigesti valitud järjekorras tabelid, mille andmed on kadunud.
- Kui vigu kasutades päringu liituda tabelid.
Mõtle esimene viga. Enne otsuse mingi probleem peab olema selgelt arusaadav, et see, mida me tahame saada lõpuks. Selles näites eespool võtsime iga üks inimesi, kuid täiesti kadunud informatsioon objekti all number 2, mille omanik ei leitud.
Kui kolisime tabelite päringu mõnes kohas ja oleks alustada «... Alates Realty lahkus liituda Peoples ...» mistahes vara, me ei kaotanud, siis ei ütle umbes inimesi.
Aga ärge kartke vasaku ühendus, lülitub täielikult välise, mis on lisatud tulemused ja sobitamine, mitte sobitamise rida.
Lõppude lõpuks, proovi maht on sageli väga suured ja lisaandmete on tegelikult kasutu. Peaasi - et aru saada, mida sa tahad saada tulemus: kõik inimesed nimekirja nende käsutuses vara või kogu vara nimekirja nende omanikele (kui üldse).
Vasak liituda - tüüpiline error: taotlus on õige määramisel tingimused Kui
Teine viga on seotud ka andmete kadumise ja ei ole alati kohe selge.
Lähme tagasi päringu, kui me lahkusime kaudu ühendused said andmed kõigi inimeste ja nende olemasoleva kinnisvara. Pea meeles järgmisi vasaku liituda SQL näiteks:
Rahvaid LEFT JOIN Realty_peoples ON Peoples.id = Realty_peoples.id_peoples; |
Oletame tahame selgitada taotluse ja ei väljasta andmeid, kus seaduse tüübist - "Kinnisvara". Kui me lihtsalt lisada, kasutades vasakule liituda SQL, näide järgmine tingimus:
...
Kui tüüp <> "Property" |
kaotame me andmeid inimesi, kes ei ole vara, sest null väärtus Null ei võrreldes järgmiselt:
Query1 | ||||||
id | L_Name | F_Name | Middle_name | sünnipäev | id_realty | tüüp |
5 | Gerasimovsky | lootus | P. | 1992/03/14 | 4 | ühine osad |
6 | Gerasimovsky | Oleg | Albertovich | 1985/01/29 | 4 | ühine osad |
7 | Sukhanovskaya | žürii | A. | 1976/09/25 | 3 | Kokku ühisomandi |
8 | Sukhanovskaya | Julia | Y. | 01.10.2001 | 3 | Kokku ühisomandi |
Selleks, et vältida vigade tegemist sel põhjusel, see on kõige parem seada valiku tingimus kohe ühendust. Soovitame kaaluda järgmisi vasaku liituda SQL näiteks.
VALI Peoples. * Realty_peoples.id_realty, Realty_peoples.type rahvaid VASAK LIITU Realty_peoples ON (Peoples.id = Realty_peoples.id_peoples JA tüüp <> "Property") |
Tulemuseks on järgmine:
Query1 | ||||||
id | L_Name | F_Name | Middle_name | sünnipäev | id_realty | tüüp |
1 | Ivanova | Daria | B. | 2000/07/16 | ||
2 | Pugin | Vladislav | Nikolajevitš | 1986/01/29 | ||
3 | Evgenin | Alexander | Federovich | 1964/04/30 | ||
4 | Annina | armastus | P. | 31.12.1989 | ||
5 | Gerasimovsky | lootus | P. | 1992/03/14 | 4 | ühine osad |
6 | Gerasimovsky | Oleg | Albertovich | 1985/01/29 | 4 | ühine osad |
7 | Sukhanovskaya | žürii | A. | 1976/09/25 | 3 | Kokku ühisomandi |
8 | Sukhanovskaya | Julia | Y. | 01.10.2001 | 3 | Kokku ühisomandi |
Seega, pärast lihtne vasakul liituda SQL Näiteks saime nimekirja kõik inimesed, liigub edasi, üks neist omadustest on omakapitali / ühisomandi.
Kokkuvõtteks tahaksin veel kord rõhutada, et proovi mingit teavet andmebaasi tuleb võtta vastutustundlikult. Paljud nüansid avati meie ees vasakul liituda SQL lihtsa näite, selgitus, millest üks - enne kui hakata kirjutama isegi põhi päringu peate hoolikalt aru saada, mida me tahame saada lõpuks. Õnn kaasa!
Similar articles
Trending Now