Kompjûters, Programming
Lofts join (SQL) - in foarbyld, de detaillearre beskriuwing, brûken fan 'e fout
Yn eltse echte relational databank, alle ynformaasje wurdt ferdield op in apart tafel. In soad fan de tabellen wurde neamd yn de kommunikaasje skema mei elkoar. Lykwols, mei help fan Sql Queries is it hiel goed mooglik om te setten in keppeling tusken de data, net ynbêde yn it sirkwy. Dit wurdt dien troch it útfieren fan in meidwaan ferbining, dat makket it mooglik om it bouwen fan in relaasje tusken alle oantal tabellen, en sels ferbine skynber disparate ynformaasje.
Dit artikel sil prate spesifyk oer de linker bûtenste meidwaan. Foar't jo fierder de beskriuwing fan dit type ferbining, add yn guon databanktabellen.
It tarieden fan de nedige tabellen
Bygelyks, yn ús database, is der ynformaasje oer minsken en harren ûnreplik guod. Gearfetting basearre op de trije tafels: Peoples (people), Realty (Real Estate), Realty_peoples (tabel relaasjes, minsken dy't fan wat eigendom heart by). Oannimme de folgjende gegevens opslein yn 'e tafels fen it folk:
Peoples | ||||
id | L_name | F_name | Middle_name | jierdei |
1 | Ivanova | Daria |
B. | 07/16/2000 |
2 | Pugin | Vladislav | Nikolajevitsj | 29.01.1986 |
3 | Evgenin | alexander | Federovich | 04/30/1964 |
4 | Yong | love | P. | 31.12.1989 |
5 | Gerasimovsky | hoopje | P. | 14.03.1992 |
6 | Gerasimovsky | Oleg | Albertovich | 01/29/1985 |
7 | Sukhanovskaya | Jury | A. | 09/25/1976 |
8 | Sukhanovskaya | Julia | Y. | 01.10.2001 |
Real Estate:
realty | |
id | adres |
1 | Archangelsk, ul. Voronin, d. 7, kv.6 |
2 | Archangelsk, ul. Severodvinskaya, d. 84, q. 9 BR. 5 |
3 | Arkhangelsk regio, Severodvinsk, st. Lenin, d. 134, q. 85 |
4 | Arkhangelsk regio, Novodevich'e, ul. Proletarshaya, d. 16, q. 137 |
5 | Archangelsk, pl. Terekhina, d. 89, q. 13 |
Relaasjes minsken - eigendom:
Realty_peoples | ||
id_peoples | id_realty | type |
7 | 3 | Totaal joint eigendom |
8 | 3 | Totaal joint eigendom |
3 | 5 | eigendom |
7 | 1 | eigendom |
5 | 4 | Common dielen |
6 | 4 | Common dielen |
Lofts join (Sql) - Beskriuwing
Left COMPOUND hat de folgjende syntaksis:
Table_A LEFT JOIN table_B [{ON predikaat} | {Mei it spisok_ mei tolbtsov}] |
En schematically sa't it folget:
En dizze útdrukking wurdt oerset as "selektearje, sûnder útsûndering, line fan Table A en Tabel B te werjaan allinne de oerienkommende rigen fan it predikaat. As de tafel waard fûn yn de string tafel foar pearen A, dan folje de dêrút folgjende kolommen Null - wearden ".
Meast faak, doe't de linker ferbining wurdt oanjûn ON, mei help wurdt brûkt allinne as de kolom nammen, dy't de planning om de ferbining binne itselde.
Lofts join - foarbylden fan gebrûk
Mei de ferbining fan lofts we kinne sjen, al it folk út de list as der Peoples eigendom. Om dit te dwaan yn it linker join SQL query foarbyld:
SELECT Folken. *, Realty_peoples.id_realty, Realty_peoples.type FROM Peoples LEFT JOIN Realty_peoples ON Peoples.id = Realty_peoples.id_peoples; |
Mei de folgjende resultaten:
Query1 | ||||||
id | L_name | F_name | Middle_name | jierdei | id_realty | type |
1 | Ivanova | Daria | B. | 07/16/2000 | ||
2 | Pugin | Vladislav | Nikolajevitsj | 29.01.1986 | ||
3 | Evgenin | alexander | Federovich | 04/30/1964 | 5 | eigendom |
4 | Yong | love | P. | 31.12.1989 | ||
5 | Gerasimovsky | hoopje | P. | 14.03.1992 | 4 | Common dielen |
6 | Gerasimovsky | Oleg | Albertovich | 01/29/1985 | 4 | Common dielen |
7 | Sukhanovskaya | Jury | A. | 09/25/1976 | 1 | eigendom |
7 | Sukhanovskaya | Jury | A. | 09/25/1976 | 3 | Totaal joint eigendom |
8 | Sukhanovskaya | Julia | Y. | 01.10.2001 | 3 | Totaal joint eigendom |
As wy sjogge, Ivanova Darya Pugin Vladislav en Anninoy Lyubovi Gjin registrearre Real Estate rjochten.
En wat soene wy hawwe krigen, mei help fan in ynderlik join Sintrale meidwaan? Sa't jo witte, it slút net-matching rigen, sa trije fan ús lêste sample soe gewoan wêze dropped:
Query1 | ||||||
id | L_name | F_name | Middle_name | jierdei | id_realty | type |
3 | Evgenin | alexander | Federovich | 04/30/1964 | 5 | eigendom |
5 | Gerasimovsky | hoopje | P. | 14.03.1992 | 4 | Common dielen |
6 | Gerasimovsky | Oleg | Albertovich | 01/29/1985 | 4 | Common dielen |
7 | Sukhanovskaya | Jury | A. | 09/25/1976 | 1 | eigendom |
7 | Sukhanovskaya | Jury | A. | 09/25/1976 | 3 | Totaal joint eigendom |
8 | Sukhanovskaya | Julia | Y. | 01.10.2001 | 3 | Totaal joint eigendom |
It soe lykje dat de twadde ferzje ek foldocht oan 'e betingsten fan ús probleem. Lykwols, as wy begjinne te hechtsje oan in oar, en in oare tafel, trije minsken út it resultaat al irretrievably ferdwûn. Dêrom wurdt yn de praktyk, doe't kombinearjen meardere tabellen folle faker brûkt lofter en rjochter ferbining dan Sintrale meidwaan.
Sille trochgean mei it sykjen nei lofts join SQL foarbylden. Taheakje in tafel mei adressen fan ús huzen:
SELECT Folken. *, 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 |
No krije wy net allinne in soarte fan wet, mar ek it adres fan ûnreplik guod:
Query1 | |||||||
id | L_name | F_name | Middle_name | jierdei | id_realty | type | adres |
1 | Ivanova | Daria | B. | 07/16/2000 | |||
2 | Pugin | Vladislav | Nikolajevitsj | 29.01.1986 | |||
3 | Evgenin | alexander | Federovich | 04/30/1964 | 5 | eigendom | Archangelsk, pl. Terekhina, d. 89, q. 13 |
4 | Yong | love | P. | 31.12.1989 | |||
5 | Gerasimovsky | hoopje | P. | 14.03.1992 | 4 | Common dielen | Arkhangelsk regio, Novodevich'e, ul. Proletarshaya, d. 16, q. 137 |
6 | Gerasimovsky | Oleg | Albertovich | 01/29/1985 | 4 | Common dielen | Arkhangelsk regio, Novodevich'e, ul. Proletarshaya, d. 16, q. 137 |
7 | Sukhanovskaya | Jury | A. | 09/25/1976 | 3 | Totaal joint eigendom | Arkhangelsk regio, Severodvinsk, st. Lenin, d. 134, q. 85 |
7 | Sukhanovskaya | Jury | A. | 09/25/1976 | 1 | eigendom | Archangelsk, ul. Voronin q. 7, kv.6 |
8 | Sukhanovskaya | Julia | Y. | 01.10.2001 | 3 | Totaal joint eigendom |
Arkhangelsk regio, Severodvinsk, st. Lenin, d. 134, q. 85 |
Lofts meidwaan - de typyske brûken fan flater: ûnjildige proseduere tafel
Basis flaters makke by de linker bûtenste dwaan tabellen, twa:
- Korrekt ik selektearre de folchoarder fan tabellen foar hokker gegevens waard ferlern.
- Wêr flaters by it brûken fan in sykopdracht mei dwaan tabellen.
Tink oan earste flater. Foarôfgeand oan it beslút fan in probleem moat dúdlik begrepen dat wat wy wolle te krijen yn 'e ein. Yn dit foarbyld hjirboppe, wy namen alle inkele ien fan 'e minsken, mar hielendal ferlear de ynformaasje oer it foarwerp ûnder de nûmer 2, wêrfan eigner waard net fûn.
As wy ferhuze de tafels yn in sykopdracht op guon plakken, en soe begjinne mei «... From Realty ferliet join Folken ...» gjin iene eigendom, wy soene net hawwe ferlern, dan sil net fertelle oer minsken.
Mar net wêze bang fan 'e linker ferbining, oerskeakelje nei folsleine eksterne, dy't opnaam is yn de resultaten en de bypassende, en net it bypassende linen.
Ommers, it folume fan foarbyld is faak hiel grut, en ekstra gegevens is eins ûnnut. It wichtichste ding - út te finen wat jo wolle krije in resultaat: fan alle minsken mei in list fan harren beskikber eigendom of de hiele eigendom list mei harren eigners (at se oanwêzich binne).
Lofts meidwaan - de typyske brûken fan flater: oanfraach just is doe't it ynstellen fan de omstannichheden yn de Wo
De twadde flater wurdt ek yn ferbân brocht mei ferlies fan gegevens, en binne net altyd fuortendaliks sichtber.
Lit ús gean werom nei de query doe't wy ferlieten fia oanslutings ûntfongen gegevens foar alle minsken en harren besteande eigendom. Tink om 'e neikommende mei lofts meidwaan SQL- foarbyld:
FROM Peoples LEFT JOIN Realty_peoples ON Peoples.id = Realty_peoples.id_peoples; |
Stel jo wolle refine de query en sjen litte de gegevens type dêr't it rjocht - "Property." As wy gewoanwei append, brûkt lofts meidwaan SQL, in foarbyld fan de folgjende betingst:
...
Wêr type <> "Property" |
wy sille ferlieze de data op minsken dy't hawwe gjin eigendom, omdat de null wearde Null wurdt net ferlike as folget:
Query1 | ||||||
id | L_name | F_name | Middle_name | jierdei | id_realty | type |
5 | Gerasimovsky | hoopje | P. | 14.03.1992 | 4 | Common dielen |
6 | Gerasimovsky | Oleg | Albertovich | 01/29/1985 | 4 | Common dielen |
7 | Sukhanovskaya | Jury | A. | 09/25/1976 | 3 | Totaal joint eigendom |
8 | Sukhanovskaya | Julia | Y. | 01.10.2001 | 3 | Totaal joint eigendom |
Om foar te kommen 'e opkomst fan fout foar dizze reden, is it bêste om de seleksje tastân fuortendaliks op ferbining. Wy suggest te beskôgje de folgjende mei lofts join SQL foarbyld.
SELECT Folken. *, Realty_peoples.id_realty, Realty_peoples.type FROM Peoples LEFT JOIN Realty_peoples ON (Peoples.id = Realty_peoples.id_peoples EN type <> "Property") |
It resultaat sil wêze as folget:
Query1 | ||||||
id | L_name | F_name | Middle_name | jierdei | id_realty | type |
1 | Ivanova | Daria | B. | 07/16/2000 | ||
2 | Pugin | Vladislav | Nikolajevitsj | 29.01.1986 | ||
3 | Evgenin | alexander | Federovich | 04/30/1964 | ||
4 | Yong |
love | P. | 31.12.1989 | ||
5 | Gerasimovsky | hoopje | P. | 14.03.1992 | 4 | Common dielen |
6 | Gerasimovsky | Oleg | Albertovich | 01/29/1985 | 4 | Common dielen |
7 | Sukhanovskaya | Jury | A. | 09/25/1976 | 3 | Totaal joint eigendom |
8 | Sukhanovskaya | Julia | Y. | 01.10.2001 | 3 | Totaal joint eigendom |
Sa, troch it folgjen fan it simpel nei lofts meidwaan SQL- bygelyks, we krigen in list fan alle folk, beweecht fierder, ien fan dizze eigenskippen yn in eigen fermogen / mienskiplik eigendom.
As ôfsluting ik soe graach beklamje ien kear wer dat in stekproef fan alle ynformaasje fan de databank moatte wurde nommen ferantwurde. In soad nuânses iepene foar ús mei lofts join SQL simpel foarbyld, de útlis wêrfan ien - foar't jo begjinne te skriuwen sels basis query, jim moatte soarchfâldich om te begripen wat wy wolle te krijen yn 'e ein. Good luck!
Similar articles
Trending Now