کامپیوتر, برنامه نویسی
چپ ملحق (SQL) - به عنوان مثال، شرح مفصل، استفاده از خطا
در هر پایگاه داده واقعی رابطه ای، تمام اطلاعات بر روی یک جدول جداگانه توزیع شده است. بسیاری از جداول مندرج در طرح ارتباط با یکدیگر تنظیم شده است. با این حال، با کمک SQL نمایش داده شد کاملا ممکن است برای قرار دادن لینک بین داده ها، در مدار تعبیه شده است. این است که با انجام یک اتصال پیوستن به، که اجازه می دهد تا شما را به ایجاد یک رابطه بین هر تعداد از جداول، و حتی اتصال اطلاعات به ظاهر متفاوت انجام می شود.
این مقاله به طور خاص در مورد بیرونی سمت چپ ملحق صحبت خواهد کرد. قبل از اقدام به شرح این نوع اتصال، اضافه کردن در برخی از جداول پایگاه داده.
آماده سازی جداول لازم
به عنوان مثال، در بانک اطلاعاتی ما، اطلاعات در مورد مردم و املاک و مستغلات آنها وجود دارد. مردم (مردم)، ملک (املاک و مستغلات)، Realty_peoples (روابط جدول، افرادی که از آنچه از اموال متعلق به): خلاصه در سه جدول است. فرض کنید داده های زیر ذخیره شده در جداول از مردم:
مردم | ||||
شناسایی | L_name | F_name | Middle_name | جشن تولد |
1 | ایوانوا | داریوش |
ب | 2000/07/16 |
2 | Pugin | ولادیسلاو | نیکلایویچ | 1986/01/29 |
3 | Evgenin | الکساندر | Federovich | 1964/04/30 |
4 | Annina | عشق | ص | 1989/12/31 |
5 | Gerasimovsky | امید | ص | 1992/03/14 |
6 | Gerasimovsky | اولگ | Albertovich شرکت | 1985/01/29 |
7 | Sukhanovskaya | هيئت منصفه | A. | 1976/09/25 |
8 | Sukhanovskaya | جولیا | Y. | 2001/01/10 |
املاک و مستغلات:
دارایی غیر منقول | |
شناسایی | نشانی |
1 | آرخانگلسک، UL. ورونین، د. 7، kv.6 |
2 | آرخانگلسک، UL. Severodvinskaya، د. 84، س. 9 BR. 5 |
3 | آرخانگلسک منطقه، سورودوینسک، ST. لنین، د. 134، س. 85 |
4 | آرخانگلسک منطقه، نووودوینسک، UL. Proletarshaya، د. 16، س. 137 |
5 | آرخانگلسک، و پلاست. Terekhina، د. 89، س. 13 |
روابط مردم - اموال:
Realty_peoples | ||
id_peoples | id_realty | نوع |
7 | 3 | مالکیت مشترک مجموع |
8 | 3 | مالکیت مشترک مجموع |
3 | 5 | خاصیت |
7 | 1 | خاصیت |
5 | 4 | قطعات مشترک |
6 | 4 | قطعات مشترک |
LEFT JOIN (SQL) - توضیحات
ترکیب را ترک کرده است از دستور زیر:
Table_A LEFT JOIN table_B [{بر گزاره} | {با استفاده از spisok_ با tolbtsov}] |
و شماتیک شرح زیر است:
و این عبارت به عنوان "انتخاب همه، بدون استثنا، خط جدول A و B جدول برای نمایش تنها ردیف تطبیق از گزاره ترجمه شده است. اگر جدول در جدول رشته برای جفت پیدا شد، و سپس پر کردن ستون نتیجه صفر - ارزش ".
در اغلب موارد، زمانی که اتصال چپ نشان داده شده است، با استفاده از استفاده می شود تنها زمانی که نام ستون، است که به منظور ایجاد اتصال یکسان هستند.
چپ پیوستن به - نمونه هایی از استفاده
با اتصال از سمت چپ ما می توانید ببینید، همه مردم را از لیست اگر مردم اموال وجود دارد. برای این کار در سمت چپ ملحق مثال پرس و جوی sql:
مردم را انتخاب کنید. *، Realty_peoples.id_realty، Realty_peoples.type از مردمان LEFT JOIN Realty_peoples بر Peoples.id = Realty_peoples.id_peoples؛ |
با نتایج زیر:
Query1 | ||||||
شناسایی | L_name | F_name | Middle_name | جشن تولد | id_realty | نوع |
1 | ایوانوا | داریوش | ب | 2000/07/16 | ||
2 | Pugin | ولادیسلاو | نیکلایویچ | 1986/01/29 | ||
3 | Evgenin | الکساندر | Federovich | 1964/04/30 | 5 | خاصیت |
4 | Annina | عشق | ص | 1989/12/31 | ||
5 | Gerasimovsky | امید | ص | 1992/03/14 | 4 | قطعات مشترک |
6 | Gerasimovsky | اولگ | Albertovich شرکت | 1985/01/29 | 4 | قطعات مشترک |
7 | Sukhanovskaya | هيئت منصفه | A. | 1976/09/25 | 1 | خاصیت |
7 | Sukhanovskaya | هيئت منصفه | A. | 1976/09/25 | 3 | مالکیت مشترک مجموع |
8 | Sukhanovskaya | جولیا | Y. | 2001/01/10 | 3 | مالکیت مشترک مجموع |
همانطور که می بینیم، ایوانوا دریا Pugin ولادیسلاو و Anninoy Lyubovi بدون ثبت نام حقوق املاک و مستغلات.
و آنچه را که ما دریافت کرده اند، با استفاده از یک INNER JOIN INNER JOIN؟ همانطور که می دانید، آن را مانع ردیف غیر تطبیق، به طوری که سه نفر از نمونه نهایی ما به سادگی می شود کاهش یافته است:
Query1 | ||||||
شناسایی | L_name | F_name | Middle_name | جشن تولد | id_realty | نوع |
3 | Evgenin | الکساندر | Federovich | 1964/04/30 | 5 | خاصیت |
5 | Gerasimovsky | امید | ص | 1992/03/14 | 4 | قطعات مشترک |
6 | Gerasimovsky | اولگ | Albertovich شرکت | 1985/01/29 | 4 | قطعات مشترک |
7 | Sukhanovskaya | هيئت منصفه | A. | 1976/09/25 | 1 | خاصیت |
7 | Sukhanovskaya | هيئت منصفه | A. | 1976/09/25 | 3 | مالکیت مشترک مجموع |
8 | Sukhanovskaya | جولیا | Y. | 2001/01/10 | 3 | مالکیت مشترک مجموع |
به نظر می رسد که نسخه دوم همچنین در دیدار با شرایط مشکل ما است. با این حال، اگر ما شروع به ضمیمه در یکی دیگر از، و جدول دیگری، سه نفر از نتیجه در حال حاضر غیر قابل برگشتی رفته است. چپ و راست اتصال بنابراین، در عمل، زمانی که ترکیب جداول چندگانه بسیار بیشتر استفاده از داخلی بپیوندند.
ادامه خواهد داد تا نگاهی به سمت چپ نمونه SQL بپیوندید. ضمیمه یک جدول با آدرس خانه ما:
مردم را انتخاب کنید. *، Realty_peoples.id_realty، Realty_peoples.type، Realty.address از مردمان LEFT JOIN Realty_peoples بر Peoples.id = Realty_peoples.id_peoples LEFT JOIN دارایی غیر منقول در Realty.id = Realty_peoples.id_realty |
در حال حاضر ما نه تنها یک نوع قانون، بلکه آدرس املاک و مستغلات:
Query1 | |||||||
شناسایی | L_name | F_name | Middle_name | جشن تولد | id_realty | نوع | نشانی |
1 | ایوانوا | داریوش | ب | 2000/07/16 | |||
2 | Pugin | ولادیسلاو | نیکلایویچ | 1986/01/29 | |||
3 | Evgenin | الکساندر | Federovich | 1964/04/30 | 5 | خاصیت | آرخانگلسک، و پلاست. Terekhina، د. 89، س. 13 |
4 | Annina | عشق | ص | 1989/12/31 | |||
5 | Gerasimovsky | امید | ص | 1992/03/14 | 4 | قطعات مشترک | آرخانگلسک منطقه، نووودوینسک، UL. Proletarshaya، د. 16، س. 137 |
6 | Gerasimovsky | اولگ | Albertovich شرکت | 1985/01/29 | 4 | قطعات مشترک | آرخانگلسک منطقه، نووودوینسک، UL. Proletarshaya، د. 16، س. 137 |
7 | Sukhanovskaya | هيئت منصفه | A. | 1976/09/25 | 3 | مالکیت مشترک مجموع | آرخانگلسک منطقه، سورودوینسک، ST. لنین، د. 134، س. 85 |
7 | Sukhanovskaya | هيئت منصفه | A. | 1976/09/25 | 1 | خاصیت | آرخانگلسک، UL. ورونین، د. 7، kv.6 |
8 | Sukhanovskaya | جولیا | Y. | 2001/01/10 | 3 | مالکیت مشترک مجموع |
آرخانگلسک منطقه، سورودوینسک، ST. لنین، د. 134، س. 85 |
چپ پیوستن به - استفاده معمولی از خطا: جدول روش نامعتبر
اشتباهات اساسی ساخته شده در سمت چپ بیرونی پیوستن به جداول، دو:
- به درستی که منظور از جدول برای که اطلاعات از دست رفته بود انتخاب شده است.
- که در آن اشتباهات در هنگام استفاده از پرس و جو با پیوستن به جداول.
اشتباه اول در نظر بگیرید. قبل از تصمیم هر گونه مشکل باید به وضوح قابل درک است که آنچه ما می خواهیم در پایان دریافت کنید. در این مثال بالا، ما در زمان هر یک از مردم، اما به طور کامل اطلاعات در مورد شی تحت شماره 2، که صاحب یافت نشد از دست داد.
اگر ما جداول در یک پرس و جو در بعضی از نقاط نقل مکان کرد، و با شروع «... از Realty چپ بپیوندید مردم ...» هر یک ملک، ما نمی خواهد از دست داده اند، شما نمی خواهد در مورد مردم بگویید.
اما نمی شود ترس از اتصال چپ، تبدیل به پر خارجی، که در نتایج و تطبیق، و نه خطوط تطبیق گنجانده شده است.
پس از همه، حجم نمونه است که اغلب بسیار بزرگ، و داده های اضافی در واقع بی فایده است. چیز اصلی - به شکل از آنچه شما می خواهید برای گرفتن نتیجه: از همه مردم با یک لیست از اموال موجود خود و یا کل لیست ملک با صاحبان آنها (در صورت وجود).
چپ پیوستن به - استفاده معمولی از خطا: درخواست درست است در هنگام تعیین شرایط در کجا
خطای دوم نیز با از دست دادن اطلاعات مرتبط، و همیشه فورا آشکار نیست.
بیایید به بازگشت به پرس و جو که ما به سمت چپ از طریق اتصال به داده ها برای همه مردم و اموال موجود خود دریافت کرده است. به یاد داشته باشید موارد زیر را با سمت چپ ملحق مثال SQL:
از مردمان LEFT JOIN Realty_peoples بر Peoples.id = Realty_peoples.id_peoples؛ |
فرض کنید ما می خواهیم برای روشن درخواست می کند و خروجی داده ها، که در آن نوع قانون - "املاک". اگر ما به سادگی اضافه، با استفاده از چپ ملحق SQL، یک نمونه از شرایط زیر:
...
که در آن نوع <> "املاک" |
ما را به داده ها بر روی افرادی که هیچ اموال، به این دلیل که مقدار null تهی است که در مقایسه نیست به شرح زیر از دست دادن:
Query1 | ||||||
شناسایی | L_name | F_name | Middle_name | جشن تولد | id_realty | نوع |
5 | Gerasimovsky | امید | ص | 1992/03/14 | 4 | قطعات مشترک |
6 | Gerasimovsky | اولگ | Albertovich شرکت | 1985/01/29 | 4 | قطعات مشترک |
7 | Sukhanovskaya | هيئت منصفه | A. | 1976/09/25 | 3 | مالکیت مشترک مجموع |
8 | Sukhanovskaya | جولیا | Y. | 2001/01/10 | 3 | مالکیت مشترک مجموع |
برای جلوگیری از اشتباهات از این دلیل اتفاق می افتد، بهتر است به مجموعه ای از شرایط انتخاب بلافاصله پس از اتصال. ما نشان می دهد به در نظر گرفتن زیر را با سمت چپ ملحق مثال SQL.
مردم را انتخاب کنید. *، Realty_peoples.id_realty، Realty_peoples.type از مردمان LEFT JOIN Realty_peoples ON (Peoples.id = Realty_peoples.id_peoples و نوع <> "املاک") |
نتیجه این خواهد بود شرح زیر است:
Query1 | ||||||
شناسایی | L_name | F_name | Middle_name | جشن تولد | id_realty | نوع |
1 | ایوانوا | داریوش | ب | 2000/07/16 | ||
2 | Pugin | ولادیسلاو | نیکلایویچ | 1986/01/29 | ||
3 | Evgenin | الکساندر | Federovich | 1964/04/30 | ||
4 | Annina | عشق | ص | 1989/12/31 | ||
5 | Gerasimovsky | امید | ص | 1992/03/14 | 4 | قطعات مشترک |
6 | Gerasimovsky | اولگ | Albertovich شرکت | 1985/01/29 | 4 | قطعات مشترک |
7 | Sukhanovskaya | هيئت منصفه | A. | 1976/09/25 | 3 | مالکیت مشترک مجموع |
8 | Sukhanovskaya | جولیا | Y. | 2001/01/10 | 3 | مالکیت مشترک مجموع |
بنابراین، با پیروی از ساده به سمت چپ ملحق مثال SQL، ما را دریافت یک لیست از تمام مردم، در حال حرکت بیشتر، یکی از این خواص در / مالکیت مشترک حقوق صاحبان سهام.
به عنوان یک نتیجه من می خواهم به تاکید یک بار دیگر که یک نمونه از هر گونه اطلاعات از پایگاه داده نیاز به مسئولانه انجام شود. بسیاری از تفاوت های ظریف باز در مقابل ما با چپ ملحق مثال ساده SQL، توضیح که یکی - قبل از شروع به نوشتن حتی جستجوهای اولیه، شما باید با دقت به درک آنچه ما می خواهیم در پایان دریافت کنید. موفق باشید!
Similar articles
Trending Now