පරිගණක, වැඩසටහන්
උදාහරණයක්, සවිස්තරාත්මක විස්තරයක්, දෝෂය භාවිතය - වම් (SQL) එක්වන
කිසිදු සැබෑ දත්ත ගබඩා සමගද දී, සියලු තොරතුරු වෙනම මේසය මත විසිරී ඇත. වගු බොහෝ එකිනෙකා සමග සන්නිවේදන ක්රමය තුළ ඉදිරියට නියම කර ඇත. කෙසේ වෙතත්, උපකාරයෙන් අනවශ්යය විමසුම් එය පරිපථ කාවද්දා නොමැත, දත්ත අතර සම්බන්ධයක් දමා තරමක් හැකි ය. මෙය ඔබ බැලූ බැල්මට තොරතුරු වගු ඕනෑම සංඛ්යාව අතර සම්බන්ධයක් ගොඩ, සහ සම්බන්ධ කිරීමට ඉඩ සලසන එක්වන සම්බන්ධයක්, රංගනය, විසින් සිදු කරනු ලැබේ.
මෙම ලිපිය එක්වන වම් පිටත ගැන විශේෂයෙන් කතා කරනු ඇත. සම්බන්ධ මේ වර්ගයේ විස්තර කිරීම සඳහා කටයුතු කිරීමට පෙර, ඇතැම් දත්ත සමුදාය වගු තුළ එක් කරන්න.
අවශ්ය වගු සකස්
උදාහරණයක් ලෙස, අපගේ දත්ත සමුදාය, මිනිසුන් හා ඔවුන්ගේ දේපල පිළිබඳ තොරතුරු නැත. ජනතා පක්ෂයද (ජනතාව), රියල්ටි (දේපල), Realty_peoples (වගුව සබඳතා, මොකක්ද දේපල අයිති අය): වගු මත පදනම් සාරාංශය. ජනතාවගේ වගු තුල ගබඩා කර ඇති පහත දත්ත යැයි උපකල්පනය කරන්න:
ජනතා | ||||
id | L_name | F_name | Middle_name | උපන් දිනය |
1 | Ivanova | Daria |
බී | 07/16/2000 |
2 | Pugin | ව්ලැඩිස්ලාව් | Nikolaevich | 29.01.1986 |
3 | Evgenin | ඇලෙක්සැන්ඩර් | Federovich | 04/30/1964 |
4 | Annina | ආදරය | පී | 31.12.1989 |
5 | Gerasimovsky | බලාපොරොත්තුව | පී | 14.03.1992 |
6 | Gerasimovsky | ඔලෙග් | Albertovich | 01/29/1985 |
7 | Sukhanovskaya | ජූරි | ඒ | 09/25/1976 |
8 | Sukhanovskaya | ජූලියා | වයි | 01.10.2001 |
දේපල:
රූපාන්තරණය | |
id | ලිපිනය |
1 | Arkhangelsk, උල්. Voronin, ඈ. 7, kv.6 |
2 | Arkhangelsk, උල්. Severodvinskaya, ඈ. 84, q. 9 බීආර්. 5 |
3 | Arkhangelsk කලාපය, Severodvinsk, වන. ලෙනින්, ඈ. 134, q. 85 |
4 | Arkhangelsk කලාපය, Novodvinsk, උල්. Proletarshaya, ඈ. 16, q. 137 |
5 | Arkhangelsk, pl. Terekhina, ඈ. 89, q. 13 |
සබඳතා ජනතාව - දේපළ:
Realty_peoples | ||
id_peoples | id_realty | වර්ගය |
7 | 3 | මුළු ඒකාබද්ධ අයිතිය |
8 | 3 | මුළු ඒකාබද්ධ අයිතිය |
3 | 5 | දේපල |
7 | 1 | දේපල |
5 | 4 | පොදු කොටස් |
6 | 4 | පොදු කොටස් |
වම් (අනවශ්යය) එක්වන - විස්තරය
ඉතිරි සංයෝගයක් පහත සඳහන් වාක්ය රීති ඇත:
| Table_A වම් table_B [{සංජානන පිළිබඳ} එකතු වන්න {Tolbtsov සමග spisok_ භාවිත කිරීම}] |
කර පහත සඳහන් ක්රමානුරූප ලෙස ලෙස:
මෙම ප්රකාශනය "හැර තොරව, සියලුම තෝරන්න, සූදානම පිළිබඳ ගැලපෙන පේළි පමණක් ප්රදර්ශනය කිරීමට වගුව A සහ වගුව බී රේඛාවක් ලෙස පරිවර්තනය වේ. වටිනාකම් "- මේසය යුගල ඒ සඳහා වැල වගුවේ සොයා නම්, NULL ඵලිත තීරු පුරවන්න.
බොහෝ විට, විට වම් සම්බන්ධයක් මත, සම්බන්ධතාවය කිරීමට රජය සැලසුම් කර ඇති මෙම තීරුව නම්, එම විට පමණක් භාවිතා වේ භාවිත කිරීම දක්වා තිබේ.
වම් එක්වන - භාවිතය සඳහා උදාහරණ
එහි මහජන නම් දේපළ, අපි වමේ සම්බන්ධතාවය බලන්න පුළුවන් ලැයිස්තුවෙන් සියලු සෙනඟ. වම් මෙම කරන්න SQL විමසුම් උදාහරණයක් එක්වන:
ජනතා SELECT. *, Realty_peoples.id_realty, Realty_peoples.type ජනතා වමේ සිට Realty_peoples පිළිබඳ Peoples.id = Realty_peoples.id_peoples එක්වන |
පහත සඳහන් ප්රතිඵල සමඟ:
Query1 | ||||||
id | L_name | F_name | Middle_name | උපන් දිනය | id_realty | වර්ගය |
1 | Ivanova | Daria | බී | 07/16/2000 | ||
2 | Pugin | ව්ලැඩිස්ලාව් | Nikolaevich | 29.01.1986 | ||
3 | Evgenin | ඇලෙක්සැන්ඩර් | Federovich | 04/30/1964 | 5 | දේපල |
4 | Annina | ආදරය | පී | 31.12.1989 | ||
5 | Gerasimovsky | බලාපොරොත්තුව | පී | 14.03.1992 | 4 | පොදු කොටස් |
6 | Gerasimovsky | ඔලෙග් | Albertovich | 01/29/1985 | 4 | පොදු කොටස් |
7 | Sukhanovskaya | ජූරි | ඒ | 09/25/1976 | 1 | දේපල |
7 | Sukhanovskaya | ජූරි | ඒ | 09/25/1976 | 3 | මුළු ඒකාබද්ධ අයිතිය |
8 | Sukhanovskaya | ජූලියා | වයි | 01.10.2001 | 3 | මුළු ඒකාබද්ධ අයිතිය |
අප දකින පරිදි, Ivanova Darya Pugin ව්ලැඩිස්ලාව් හා Anninoy Lyubovi නොමැත දේපල හිමිකම් ලියාපදිංචි.
සහ අප අභ්යන්තර ඇතුළත එක්වන එක්වන භාවිතා හිමි වනු ඇත? ඔබ දන්නා පරිදි, එය ගැලපෙන නොවන පේළි බැහැර, ඒ නිසා අපේ අවසාන නියැදි කින් තුනක් හුදෙක් වැටී ඇත:
Query1 | ||||||
id | L_name | F_name | Middle_name | උපන් දිනය | id_realty | වර්ගය |
3 | Evgenin | ඇලෙක්සැන්ඩර් | Federovich | 04/30/1964 | 5 | දේපල |
5 | Gerasimovsky | බලාපොරොත්තුව | පී | 14.03.1992 | 4 | පොදු කොටස් |
6 | Gerasimovsky | ඔලෙග් | Albertovich | 01/29/1985 | 4 | පොදු කොටස් |
7 | Sukhanovskaya | ජූරි | ඒ | 09/25/1976 | 1 | දේපල |
7 | Sukhanovskaya | ජූරි | ඒ | 09/25/1976 | 3 | මුළු ඒකාබද්ධ අයිතිය |
8 | Sukhanovskaya | ජූලියා | වයි | 01.10.2001 | 3 | මුළු ඒකාබද්ධ අයිතිය |
එය දෙවන සංස්කරණය ද අපගේ ප්රශ්නය කොන්දේසි සැකසී ඇති බව පෙනෙන්නට තිබේ. කෙසේ වෙතත්, අපට තවත් මත අනුයුක්ත කිරීමට ආරම්භ, සහ තවත් වගුව නම්, ප්රතිඵලයෙන් ජනතාව තුනක් දැනටමත් යලිත් පිලිසකර ගොස්. ඒ නිසා, ප්රායෝගිකව, බහු වගු යෙදෙන විට තවත් බොහෝ බොහෝ විට වම හා ඇතුළු එක්වන වඩා අයිතිය සම්බන්ධයෙන් භාවිත කළා.
දිගටම වම් බැලීමට sql උදාහරණ එකතු වනු ඇත. අපේ ගෙවල් ලිපිනයන් මේසයක් අමුණන්න:
ජනතා SELECT. *, Realty_peoples.id_realty, Realty_peoples.type, Realty.address ජනතා සිට වම් එක්වන Realty_peoples පිළිබඳ Peoples.id = Realty_peoples.id_peoples වම් Realty.id = Realty_peoples.id_realty පිළිබඳ රියල්ටි එක්වන |
දැන් අපි නීතිය කාරුණික, පමණක් නොව, දේපල ලිපිනය පමණක් නොව ගන්න:
Query1 | |||||||
id | L_name | F_name | Middle_name | උපන් දිනය | id_realty | වර්ගය | ලිපිනය |
1 | Ivanova | Daria | බී | 07/16/2000 | |||
2 | Pugin | ව්ලැඩිස්ලාව් | Nikolaevich | 29.01.1986 | |||
3 | Evgenin | ඇලෙක්සැන්ඩර් | Federovich | 04/30/1964 | 5 | දේපල | Arkhangelsk, pl. Terekhina, ඈ. 89, q. 13 |
4 | Annina | ආදරය | පී | 31.12.1989 | |||
5 | Gerasimovsky | බලාපොරොත්තුව | පී | 14.03.1992 | 4 | පොදු කොටස් | Arkhangelsk කලාපය, Novodvinsk, උල්. Proletarshaya, ඈ. 16, q. 137 |
6 | Gerasimovsky | ඔලෙග් | Albertovich | 01/29/1985 | 4 | පොදු කොටස් | Arkhangelsk කලාපය, Novodvinsk, උල්. Proletarshaya, ඈ. 16, q. 137 |
7 | Sukhanovskaya | ජූරි | ඒ | 09/25/1976 | 3 | මුළු ඒකාබද්ධ අයිතිය | Arkhangelsk කලාපය, Severodvinsk, වන. ලෙනින්, ඈ. 134, q. 85 |
7 | Sukhanovskaya | ජූරි | ඒ | 09/25/1976 | 1 | දේපල | Arkhangelsk, උල්. Voronin, ඈ. 7, kv.6 |
8 | Sukhanovskaya | ජූලියා | වයි | 01.10.2001 | 3 | මුළු ඒකාබද්ධ අයිතිය |
Arkhangelsk කලාපය, Severodvinsk, වන. ලෙනින්, ඈ. 134, q. 85 |
වම් එක්වන - දෝෂයක් සාමාන්ය භාවිතය: වලංගු නොවන ක්රියා පටිපාටිය වගුව
වම් පිටත සිදු මූලික වැරදි වගු, දෙකක් එක්වන:
- නිවැරදිව සඳහා දත්ත අහිමි විය වගු අනුපිළිවෙල තෝරා ගන්නා ලදී.
- සමග විමසුම භාවිතා කරන විට වැරදි වගු එක්වන කොහෙද.
පළමු වැරැද්ද ගැන සලකා බලන්න. අපි අවසානයේ දී ලබා ගැනීමට අවශ්ය දේ බව ඕනෑම ප්රශ්නයක් පිළිබඳ තීරණය කිරීමට පෙර පැහැදිලිව වටහා ගත යුතු ය. ඉහත මෙම උදාහරණයේදී, අපි ජනතාවගේ සෑම එකක් ගෙන, නමුත් සම්පූර්ණයෙන්ම සංඛ්යාව 2, කාගේ හිමිකරු සොයාගත නොහැකි විය යටතේ වස්තුව පිළිබඳ තොරතුරු අහිමි විය.
අපි සමහර ස්ථානවල විමසීමකදී දී වගු ගිය අතර ආරම්භ නම් «... රියල්ටි සිට මහජන එක්වන ඉතිරි ...» කිසිදු එක් දේපල, අපට අහිමි වූ නැහැ, ඔබ ජනයා ගැන කියන්නේ නැහැ.
නමුත් ප්රතිඵල සහ ගැලපෙන ඇතුළත් වන වම් සම්බන්ධතාවයක්, පූර්ණ බාහිර මාරු, භය, සහ ගැලපෙන රේඛා වෙන්න එපා.
ඇත්තෙන්ම, ආදර්ශ පරිමාව බොහෝ විට ඉතා විශාල වන අතර, අතිරේක දත්ත ඇත්තටම මිනිසෙක් ය. ප්රධාන දෙයක් - ඔබ එහි ප්රතිඵලයක් ලබා ගැනීමට අවශ්ය කුමක් දැයි පැහැදිලි කර ගැනීම: ඔවුන් ලබා ගත හැකි දේපල ලැයිස්තුවක් හෝ සිය අයිතිකරුවන් සමග සමස්ත දේපළ ලැයිස්තුවට (අවශ්ය නම් පමණක්) සමග සියලු ජනයා.
වම් එක්වන - දෝෂයක් සාමාන්ය භාවිතය: ඉල්ලීම් ද කොහෙද කොන්දේසි සකසා විට නිවැරදි
දෙවන දෝෂ ද දත්ත අහිමි හා සම්බන්ධ, හා සෑම විටම වහාම පැහැදිලි නැත ඇත.
අපි සම්බන්ධතා හරහා ඉවත් වන විට සියලු ජනයා හා ඔවුන්ගේ පවත්නා දේපල සඳහා දත්ත ලබා ආපසු විමසුම යන්න ඉඩ දෙන්න. වම සමග පහත සඳහන් මතක තබා ගන්න sql උදාහරණයක් එක්වන:
ජනතා වමේ සිට Realty_peoples පිළිබඳ Peoples.id = Realty_peoples.id_peoples එක්වන |
අපි ඉල්ලීමක් පැහැදිලි කිරීමට අවශ්ය සිතන්න සහ ප්රතිදානය නීතිය වර්ගය දත්ත යන තැන, නැත - "ඉඩකඩම්". අපි සරලව ඇතුලත් නම්, වම් භාවිතා sql අතර, පහත දැක්වෙන තත්ත්වය උදාහරණයක් එක්වන:
...
කොහෙද වර්ගය <> "ඉඩකඩම්" |
අපි ශූන්ය අගය NULL පහත සඳහන් පරිදි සාපේක්ෂව නොවන නිසා, කිසිදු දේපල ඇති අය මත දත්ත අහිමි වනු ඇත:
Query1 | ||||||
id | L_name | F_name | Middle_name | උපන් දිනය | id_realty | වර්ගය |
5 | Gerasimovsky | බලාපොරොත්තුව | පී | 14.03.1992 | 4 | පොදු කොටස් |
6 | Gerasimovsky | ඔලෙග් | Albertovich | 01/29/1985 | 4 | පොදු කොටස් |
7 | Sukhanovskaya | ජූරි | ඒ | 09/25/1976 | 3 | මුළු ඒකාබද්ධ අයිතිය |
8 | Sukhanovskaya | ජූලියා | වයි | 01.10.2001 | 3 | මුළු ඒකාබද්ධ අයිතිය |
මේ හේතුව නිසා ඇතිවීම වැරදි වලක්වා ගැනීම සඳහා, එය සම්බන්ධ මත වහාම තෝරා තත්ත්වය ඇති කිරීමට හොඳම. අපි SQL උදාහරණයක් එක්වන වම් සමග පහත සඳහන් සලකා යෝජනා කරමු.
ජනතා SELECT. *, Realty_peoples.id_realty, Realty_peoples.type ජනතා සිට වම් Realty_peoples මත (Peoples.id = Realty_peoples.id_peoples සහ වර්ගය <> "ඉඩකඩම්") සමග එකතු වන්න |
ලැබෙන පිළිතුර පහත සඳහන් පරිදි වේ:
Query1 | ||||||
id | L_name | F_name | Middle_name | උපන් දිනය | id_realty | වර්ගය |
1 | Ivanova | Daria | බී | 07/16/2000 | ||
2 | Pugin | ව්ලැඩිස්ලාව් | Nikolaevich | 29.01.1986 | ||
3 | Evgenin | ඇලෙක්සැන්ඩර් | Federovich | 04/30/1964 | ||
4 | Annina | ආදරය | පී | 31.12.1989 | ||
5 | Gerasimovsky | බලාපොරොත්තුව | පී | 14.03.1992 | 4 | පොදු කොටස් |
6 | Gerasimovsky | ඔලෙග් | Albertovich | 01/29/1985 | 4 | පොදු කොටස් |
7 | Sukhanovskaya | ජූරි | ඒ | 09/25/1976 | 3 | මුළු ඒකාබද්ධ අයිතිය |
8 | Sukhanovskaya | ජූලියා | වයි | 01.10.2001 | 3 | මුළු ඒකාබද්ධ අයිතිය |
මේ අනුව, වමට සරල SQL උදාහරණයක් එක්වන අනුගමනය කිරීමෙන්, අප සියලු ජනතාව ලැයිස්තුවක්, ව්යාපාර කොටස් / ඒකාබද්ධ අයිතිය මෙම ගුණ එක් තවදුරටත් ගමන් ලැබීය.
අවසාන වශයෙන් මම දත්ත ඕනෑම තොරතුරු නියැදි වගකීමෙන් කටයුතු කළ යුතු බව නැවත වරක් අවධාරණය කිරීමට කැමැත්තෙමි. ඔබ පවා මූලික විමසුම ලිවීමට කිරීම ආරම්භ කිරීමට පෙර, ඔබ ප්රවේශමෙන් අපි අවසානයේ දී ලබා ගැනීමට අවශ්ය දේ තේරුම් ගැනීමට යුතුයි - වම් අප ඉදිරිපිට විවෘත බොහෝ එළඹීමේදී sql සරල උදාහරණයක්, ඉන් එක් අයෙකු පැහැදිලි එක්වන. සුබ පැතුම්!
Similar articles
Trending Now