در قسمت هفتم آموزش SQL Server ،مباحث Sub Query ها و نحوه ارتباطشان با Query ها را به شما آموزش دادیم.دراین قسمت قصد داریم انواع join ها (INNER JOIN ،LEFT/RIGHT OUTER JOIN) را به شما آموزش بدیم.
عبارت INNER JOIN برای اتصال دو جدول و نمایش اطلاعات وارد شده درون آنها میباشد.همانگونه که میدانید در اموزش های قبل ما اتصال بین دو جدول را توسطde Cartesian Base انجام میدادیم که حال میخواهیم روش دیگری را معرفی کنیم که استفاده از انواع join ها میباشد.
در ابتدا از inner join استفاده میکنیم و مثالی ساده برای ان ذکر میکنیم.
به تصویر زیر دقت کنید :
همانگونه که در تصویر بالا میبینیدما دو قطعه کد نوشتیم قطعه کدی که با شماره 1 مشخص شده طیق de Cartesian base هایی که قبلا اموزش داده ایم نوشته شده ولی الان نمیخواهیم از ان استفاد کنیم و فقط برای درک بیشتر شما ان را نوشته ایم بحث ما به روی قطعه کد شماره 2 میباشد همانگونه که مشاهده میکنید خط اول هر دو تکه کد مانند یکدیگر میباشد که ستون هایی که میخواهیم در نتیجه نشان دهد را مشخص میکند در خط دوم از دستور inner join بین دو جدولی که میخواهیم توسط اتصال اطلاعات هر دو را نشان دهد استفاده کرده ایم باید توجه داشت زمانی که از دستور join استفاده میکنیم باید حتما از دستور on هم استفاده کنیم که این دستور برای ذکر شرط میباشد که شرط گفته شده همان شرطی است که در قطعه کد بالا استفاده شده که شرط حتما باید جلوی دستور on ذکر شود.
حال اگر قطعه کد مورد نظر را هایلایت کرده و اجرا کنیم دقیقا همان نتیجه را نشان میدهد که قطعه کد شماره 1 نشان میدهد.
نمونه و مدل دیگر ارتباط بین جداول استفاده از دستور left outer join میباشد که نوع دیگری از join کردن است.تفاوت left outer join با inner join را با یک مثال ساده در تصویر زیر مشخص کرده ایم.
همانگونه که در تصویر بالا مشاهده میکنید ما کدی را هایلایت نکردیم و هردو را با هم اجرا میکنیم تا در نتیجه ایجاد شده تفاوت این دو ارتباط را ببینید.
همانگونه که میبینید قطعه کد اول که نتیجه ان نیز با عدد 1 مشخص شده تنها ان گروه کتاب هایی(جدول سمت چپ) را نمایش میدهد که کتابی مربوط به ان گروه در سیستم ثبت شده اما قطعه کد دوم که نتیجه ان نیز یا عدد 2 مشخص شده تمام گروه های کتابی را نمایش میدهد حتی انها که کتابی مربوط به ان در سیستم ثبت نشده در واقع این دستور به نام جدولی که در سمت چپش نوشته شده اشاره دارد و میگوید تمام اطلاعات درون جدول سمت چپ را نمایش بده حتی انها که مقادیر در جدول سمت راست برایشان وارد نشده.
حال همین دستور به صورت right outer join نیز استفاده میشود که دقیقا عکس نتیجه بالا را دارد یعنی تمامی اطلاعات درون جدول سمت راست دستور که در اینجا جدول کتاب میباشد را نمایش بده حتی انهایی که گروهی (جدول سمت چپ) برایشان مشخص نشده.