Mga computer, Programming
Kaliwa sumali sa (SQL) - isang halimbawa, ang detalyadong paglalarawan, ang paggamit ng mga error
Sa anumang tunay na pamanggit database, ang lahat ng impormasyon ay ipinamamahagi sa isang hiwalay na table. Marami sa mga talahanayan ay itinakda sa ang scheme ng pakikipag-usap sa bawat isa. Gayunman, sa tulong ng Sql query ito ay lubos na posible na maglagay ng isang link sa pagitan ng mga data, hindi naka-embed sa circuit. Ginagawa ito sa pamamagitan ng pagsasagawa ng isang sumali sa koneksyon, na nagpapahintulot sa iyo na bumuo ng isang relasyon sa pagitan ng anumang bilang ng mga talahanayan, at kahit na kumonekta mukha disparate impormasyon.
Ang artikulong ito ay makipag-usap tungkol sa partikular na kaliwa panlabas na sumali. Bago ka magpatuloy sa paglalarawan ng ganitong uri ng koneksyon, idagdag sa ilang mga talahanayan ng database.
Inihahanda ang mga kinakailangang mga talahanayan
Halimbawa, sa aming database, may impormasyon tungkol sa mga tao at ang kanilang mga real estate. Buod batay sa tatlong mga talahanayan: People (tao), Realty (real estate), Realty_peoples (relasyon mesa, mga taong mula sa kung ano property ay kabilang sa). Ipagpalagay na ang mga sumusunod na data na naka-imbak sa mga talahanayan ng mga tao:
People | ||||
ID | L_name | F_name | Middle_name | kaarawan |
1 | Ivanova | Daria |
B. | 2000/07/16 |
2 | Pugin | Vladislav | Nikolaevich | 1986/01/29 |
3 | Evgenin | Alexander | Federovich | 1964/04/30 |
4 | annina | pag-ibig | P. | 1989/12/31 |
5 | Gerasimovsky | pag-asa | P. | 1992/03/14 |
6 | Gerasimovsky | Oleg | Albertovich | 1985/01/29 |
7 | Sukhanovskaya | hurado | A. | 1976/09/25 |
8 | Sukhanovskaya | Julia | Y. | 2001/01/10 |
Real estate:
ari-arian | |
ID | address |
1 | Arkhangelsk, ul. Voronin, d. 7, kv.6 |
2 | Arkhangelsk, ul. Severodvinskaya, d. 84, q. 9 BR. 5 |
3 | Arkhangelsk rehiyon, Severodvinsk, st. Lenin, d. 134, q. 85 |
4 | Arkhangelsk rehiyon, Novodvinsk, ul. Proletarshaya, d. 16, q. 137 |
5 | Arkhangelsk, pl. Terekhina, d. 89, q. 13 |
Relations tao - ari-arian:
Realty_peoples | ||
id_peoples | id_realty | uri |
7 | 3 | Kabuuang pinagsamang pagmamay-ari |
8 | 3 | Kabuuang pinagsamang pagmamay-ari |
3 | 5 | ari-arian |
7 | 1 | ari-arian |
5 | 4 | Mga karaniwang mga bahagi |
6 | 4 | Mga karaniwang mga bahagi |
Kaliwa sumali (Sql) - Paglalarawan
Kaliwa compound may mga sumusunod na syntax:
Table_A KALIWA SUMALI table_B [{ON predicate} | {PAGGAMIT spisok_ na may tolbtsov}] |
At skematikong tulad ng sumusunod:
At ito expression ay isinalin bilang "Piliin Lahat, nang walang pagbubukod, linya ng Table A at Table B upang ipakita lamang ang pagtutugma ng mga hilera ng panaguri. Kung ang talahanayan ay natagpuan sa talahanayan string para sa mga pares A, pagkatapos ay punan ang mga nagresultang mga haligi Null - halaga ".
Kadalasan, kapag ang mga natitira koneksyon ay ipinahiwatig ON, gamit ay ginagamit lamang kapag ang mga pangalan ng haligi, na kung saan ay binalak upang gawin ang mga koneksyon ay pareho.
Kaliwa sumali - mga halimbawa ng paggamit
Gamit ang koneksyon ng kaliwang maaari naming makita, ang lahat ng mga tao mula sa listahan kung may People ari-arian. Upang gawin ito sa kaliwang sumali sa sql query halimbawa:
SELECT People. *, Realty_peoples.id_realty, Realty_peoples.type MULA People KALIWA SUMALI Realty_peoples ON Peoples.id = Realty_peoples.id_peoples; |
Sa pamamagitan ng mga sumusunod na resulta:
Query1 | ||||||
ID | L_name | F_name | Middle_name | kaarawan | id_realty | uri |
1 | Ivanova | Daria | B. | 2000/07/16 | ||
2 | Pugin | Vladislav | Nikolaevich | 1986/01/29 | ||
3 | Evgenin | Alexander | Federovich | 1964/04/30 | 5 | ari-arian |
4 | annina | pag-ibig | P. | 1989/12/31 | ||
5 | Gerasimovsky | pag-asa | P. | 1992/03/14 | 4 | Mga karaniwang mga bahagi |
6 | Gerasimovsky | Oleg | Albertovich | 1985/01/29 | 4 | Mga karaniwang mga bahagi |
7 | Sukhanovskaya | hurado | A. | 1976/09/25 | 1 | ari-arian |
7 | Sukhanovskaya | hurado | A. | 1976/09/25 | 3 | Kabuuang pinagsamang pagmamay-ari |
8 | Sukhanovskaya | Julia | Y. | 2001/01/10 | 3 | Kabuuang pinagsamang pagmamay-ari |
Tulad ng nakikita natin, Ivanova Darya Pugin Vladislav at Anninoy Lyubovi Hindi nakarehistro sa karapatang real estate.
At ano ang gusto namin natanggap, gamit ang isang panloob sumali Inner sumali? Tulad ng alam mo, hindi ito isinasali ng walang katugmang mga hilera, kaya tatlo sa aming panghuling sample Gusto lang bumaba:
Query1 | ||||||
ID | L_name | F_name | Middle_name | kaarawan | id_realty | uri |
3 | Evgenin | Alexander | Federovich | 1964/04/30 | 5 | ari-arian |
5 | Gerasimovsky | pag-asa | P. | 1992/03/14 | 4 | Mga karaniwang mga bahagi |
6 | Gerasimovsky | Oleg | Albertovich | 1985/01/29 | 4 | Mga karaniwang mga bahagi |
7 | Sukhanovskaya | hurado | A. | 1976/09/25 | 1 | ari-arian |
7 | Sukhanovskaya | hurado | A. | 1976/09/25 | 3 | Kabuuang pinagsamang pagmamay-ari |
8 | Sukhanovskaya | Julia | Y. | 2001/01/10 | 3 | Kabuuang pinagsamang pagmamay-ari |
Gusto Ito tila na ang ikalawang bersyon din ay nakakatugon sa mga kondisyon ng aming mga problema. Gayunpaman, kung nagsisimula namin upang i-attach sa isa pa, at isa pa mesa, tatlong tao mula sa resulta na irretrievably nawala. Samakatuwid, sa kasanayan, kapag pagsasama ng maramihang mga talahanayan mas madalas na ginagamit Kaliwa at Kanan na koneksyon sa Inner sumali.
Ay patuloy na tumingin sa kaliwa sumali sa sql halimbawa. Mag-attach ng isang talahanayan na may mga address ng aming mga bahay:
SELECT People. *, Realty_peoples.id_realty, Realty_peoples.type, Realty.address MULA People Kaliwa SUMALI Realty_peoples ON Peoples.id = Realty_peoples.id_peoples Kaliwa SUMALI Realty ON Realty.id = Realty_peoples.id_realty |
Ngayon makuha namin hindi lamang isang uri ng batas, kundi pati na rin ang address ng real estate:
Query1 | |||||||
ID | L_name | F_name | Middle_name | kaarawan | id_realty | uri | address |
1 | Ivanova | Daria | B. | 2000/07/16 | |||
2 | Pugin | Vladislav | Nikolaevich | 1986/01/29 | |||
3 | Evgenin | Alexander | Federovich | 1964/04/30 | 5 | ari-arian | Arkhangelsk, pl. Terekhina, d. 89, q. 13 |
4 | annina | pag-ibig | P. | 1989/12/31 | |||
5 | Gerasimovsky | pag-asa | P. | 1992/03/14 | 4 | Mga karaniwang mga bahagi | Arkhangelsk rehiyon, Novodvinsk, ul. Proletarshaya, d. 16, q. 137 |
6 | Gerasimovsky | Oleg | Albertovich | 1985/01/29 | 4 | Mga karaniwang mga bahagi | Arkhangelsk rehiyon, Novodvinsk, ul. Proletarshaya, d. 16, q. 137 |
7 | Sukhanovskaya | hurado | A. | 1976/09/25 | 3 | Kabuuang pinagsamang pagmamay-ari | Arkhangelsk rehiyon, Severodvinsk, st. Lenin, d. 134, q. 85 |
7 | Sukhanovskaya | hurado | A. | 1976/09/25 | 1 | ari-arian | Arkhangelsk, ul. Voronin, d. 7, kv.6 |
8 | Sukhanovskaya | Julia | Y. | 2001/01/10 | 3 | Kabuuang pinagsamang pagmamay-ari |
Arkhangelsk rehiyon, Severodvinsk, st. Lenin, d. 134, q. 85 |
Kaliwa sumali sa - ang tipikal na paggamit ng mga error: invalid procedure mesa
Basic pagkakamali na ginawa sa kaliwang panlabas na sumali sa mga talahanayan, dalawang:
- Tama pinili ang pagkakasunud-sunod ng mga talahanayan para sa kung saan ang data ay mawawala.
- Saan error kapag gumagamit ng isang query na may sumali sa mga talahanayan.
Isaalang-alang ang unang pagkakamali. Bago ang desisyon ng anumang problema ay dapat na malinaw na nauunawaan na kung ano ang gusto namin upang makakuha ng sa dulo. Sa halimbawa na ito sa itaas, kinuha namin ang bawat solong isa sa mga tao, ngunit ganap na nawala ang impormasyon tungkol sa mga bagay sa ilalim ng number 2, ang may-ari ay hindi natagpuan.
Kung inilipat namin ang mga talahanayan sa isang query sa ilang mga lugar, at gusto magsimula sa «... Mula Realty kaliwa sumali People ...» anumang isa ari-arian, ay hindi sana namin nawala, hindi mo na sabihin tungkol sa mga tao.
Ngunit huwag matakot sa kaliwa koneksyon, lumipat sa full panlabas, na kung saan ay kasama sa mga resulta at ang matching, at hindi ang pagtutugma ng mga linya.
Pagkatapos ng lahat, ang dami ng sample ay madalas na masyadong malaki, at dagdag na data ay aktwal na walang silbi. Ang pangunahing bagay - upang malaman kung ano ang nais mong makakuha ng isang resulta: ng lahat ng mga tao na may isang listahan ng kanilang mga magagamit na ari-arian o ang buong listahan ng ari-arian sa kanilang mga may-ari (kung mayroon man).
Kaliwa sumali sa - ang tipikal na paggamit ng mga error: Request ay tama kapag nagtatakda ng mga kundisyon sa Nasaan
Ang ikalawang error ay din na kaugnay sa pagkawala ng data, at ay hindi palaging agad maliwanag.
Sabihin bumalik sa query kapag iniwan namin sa pamamagitan ng mga koneksyon na natanggap ng data para sa lahat ng mga tao at ang kanilang mga umiiral na mga ari-arian. Tandaan ang mga sumusunod sa kaliwang sumali sa sql Halimbawa:
MULA People KALIWA SUMALI Realty_peoples ON Peoples.id = Realty_peoples.id_peoples; |
Ipagpalagay na nais naming linawin ang kahilingan at hindi output ng data, kung saan ang uri ng batas - "Property". Kung gagawin lang ikabit, gamit ang kaliwa sumali sa sql, ang isang halimbawa ng mga sumusunod na kondisyon:
...
Kung saan i-type ang <> "Property" |
kami ay mawalan ng data sa mga taong walang ari-arian, dahil ang null halaga Null ay hindi kung ihahambing ang mga sumusunod:
Query1 | ||||||
ID | L_name | F_name | Middle_name | kaarawan | id_realty | uri |
5 | Gerasimovsky | pag-asa | P. | 1992/03/14 | 4 | Mga karaniwang mga bahagi |
6 | Gerasimovsky | Oleg | Albertovich | 1985/01/29 | 4 | Mga karaniwang mga bahagi |
7 | Sukhanovskaya | hurado | A. | 1976/09/25 | 3 | Kabuuang pinagsamang pagmamay-ari |
8 | Sukhanovskaya | Julia | Y. | 2001/01/10 | 3 | Kabuuang pinagsamang pagmamay-ari |
Upang maiwasan ang mga error mula sa nagaganap para sa kadahilanang ito, ito ay pinakamahusay upang i-set ang kalagayan na seleksyon kaagad pagkatapos matanggap ang koneksyon. Iminumungkahi namin na isaalang-alang ang mga sumusunod na gamit ang kaliwang sumali sa sql halimbawa.
SELECT People. *, Realty_peoples.id_realty, Realty_peoples.type MULA People Kaliwa SUMALI Realty_peoples ON (Peoples.id = Realty_peoples.id_peoples AT i-type ang <> "Property") |
Ang resulta nito ay ang mga sumusunod:
Query1 | ||||||
ID | L_name | F_name | Middle_name | kaarawan | id_realty | uri |
1 | Ivanova | Daria | B. | 2000/07/16 | ||
2 | Pugin | Vladislav | Nikolaevich | 1986/01/29 | ||
3 | Evgenin | Alexander | Federovich | 1964/04/30 | ||
4 | annina | pag-ibig | P. | 1989/12/31 | ||
5 | Gerasimovsky | pag-asa | P. | 1992/03/14 | 4 | Mga karaniwang mga bahagi |
6 | Gerasimovsky | Oleg | Albertovich | 1985/01/29 | 4 | Mga karaniwang mga bahagi |
7 | Sukhanovskaya | hurado | A. | 1976/09/25 | 3 | Kabuuang pinagsamang pagmamay-ari |
8 | Sukhanovskaya | Julia | Y. | 2001/01/10 | 3 | Kabuuang pinagsamang pagmamay-ari |
Kaya, sa pamamagitan ng pagsunod sa mga simpleng sa kaliwa sumali sa sql Halimbawa, nakatanggap kami ng listahan ng lahat ng mga tao, gumagalaw pa, isa sa mga pag-aari sa isang equity / joint pagmamay-ari.
Bilang isang konklusyon Gusto kong bigyang-diin muli na ang isang sample ng anumang impormasyon mula sa database na kailangan upang madala nang responsable. Maraming mga nuances binuksan sa harap ng sa amin na may kaliwa sumali sa sql simpleng halimbawa, ang paliwanag ng kung saan ang isa - bago ka magsimulang magsulat ng kahit na mga pangunahing query, dapat kang maingat upang maunawaan kung ano ang gusto namin upang makakuha ng sa dulo. Good luck!
Similar articles
Trending Now