Komputiloj, Programado
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:
- Ĝuste elektis la ordon de tabloj por kiu datumoj estis perdita.
- 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