آموزش Left Outer Join در SQL Server با مثال

در این پست قصد دارم به ارائه یک مثال از کاربرد دستور Left outer join در SQL -SERVER بپردازم. همون طور که میدونید برای اتصال دو یا چند جدول در دیتابیس از عملگر های Join استفاده می کنیم که انواع مختلفی هم دارند. از جمله Cross join که مانند ضرب دکارتی دو جدول عمل می کنه و تمامی سطر های دو جدول رو با هم پیوند میده و در خروجی نمایش میده.Inner join که برای استفاده از این عملگر در صورتی که از شرط ضرب on استفاده نکنیم درست مانند Cross join عمل می کنه و تمامی سطر های دو جدول که با هم پیوند خوردند در خروجی نمایش داده می شن.و حالا قبل از پرداختن به مبحث Left outer join باید در این این جا دو اصطلاح رو تعریف کنم:

دوره های شبکه، برنامه نویسی، مجازی سازی، امنیت، نفوذ و ... با برترین های ایران

1- سطر های پیوندپذیر

2- سطر های پیوندناپذیر.

همون طور که میدونید در اثر اعمال عملگر ضرب دکارتی و یا به عبارتی همان join تعدادی سطر بی معنی ایجاد می شوند. برای آن که در خروجی سطر های با معنی رو داشته باشیم از شروط ضرب استفاده می کنیم. در صورتی که مقدار سطر در ستون مشترک دو جدول یکی باشه، اون سطر یک سطر پیوند پذیر هست. برای مثال اگر ستون مشترک بین دو جدول در دیتابیس، نام افراد باشه، اون سطری از دو جدول به عنوان یک سطر پیوند پذیر تلقی میشه که مقدار اون ( یعنی نام فرد) در هر دو جدول از مقدار یکسانی برخوردار باشه. بنابراین هنگامی که شما شرط ضرب رو می نویسید، با خروجی بی معنی مثل شکل زیر مواجه نمی شوید:

وب سایت توسینسو

در این شکل دو جدول با هم دیگه پیوند خوردن که ستون های نام ،شهر و شماره وام مربوط به یک جدول و ستون های نام شعبه و مقدار وام مربوط به یک جدول دیگر هست.سطرهای معنی دار به رنگ سبز نشون داده شده و سطر بی معنی آخر به رنگ قرمز. همون طور که می بینید در سطر آخر به این صورت تفسیر میشه : مشتری به نام محمد که ساکن شهر قم است ، نامش سهیله و از شبعه فرشته وامی به مقدار 22400 تومد گرفته !!!! بنابراین به همین دلیل این سطر یک سطر پیوند ناپذیر هست...حالا زمانی که شما از دستور Left outer join استفاده می کنید، سطرهای پیوند ناپذیر جدول سمت چپ ( جدولی که سمت چپ عبارت

Left outer join ) قرار گرفته نیز در خروجی ظاهر میشه. به شکل زیر نگاه کنید :

وب سایت توسینسو

در این شکل باز هم سطرهای پیوند پذیر رو با رنگ سبز و پیوند ناپذیر ها رو با رنگ قرمز نشون دادم.

نتیجه اجرای کوئری با استفاده از دستون Left outer join بر روی این دو جدول به صورت زیر خواهد بود:

وب سایت توسینسو

همون طور که می بینید سطر پیوند ناپذیر جدول مشتری در این جا ظاهر شده و در ستون هایی که مربوط به جدول وام هست مقداریر NULL رو مشاهده می کنید.تفسیری که برای این خروجی هست به این صورته : نام مشتریانی که وام نگرفته اند.بنابراین از Left outer join و هم چنین right outer join میشه برای یک چنین کوئری هایی استفاده کرد.اما نکته مهمی که در کوئری زدن وجود داره، هزینه ای هست که برای کوئری باید در نظر بگیرید. هدف این هست که کوئری هایی بنویسیم که بهینه باشند و در مدت زمان کمتری به ما خروجی بدن. همین کوئری رو با دستورات Not exist و not in و صد البته با تفاضل هم میشه نوشت.ابزاری در management studio هست به این شکل:

وب سایت توسینسو

include actual execution plan شما می تونید چند تا کوئری رو بنویسید و قبل از اجرای هم زمان این ابزار رو فعال کنید و بعد از اجرا هزینه اجرای هریک از کوئری ها رو ببینید به این صورت : و می تونید هزینه هریک از کوئری ها رو ببینید و کوئری کم هزینه تر رو انتخاب کنید.

وب سایت توسینسو

نظرات