دستورات مرتبط با JOIN در SQL Server :
مهم ترین دستور در SQL ، دستورات مرتبط با Join هستند ، اینکه بتوانیم اطلاعات را از جدول های دیگر بیاوریم و با اطلاعات جدول های دیگری ترکیب کنیم ، بسیار پر کاربرد و ارزشمند است.
در ابتدا بهتر است شماتیک و مفهوم Join را یاد بگیریم :
فرض کنید یک جدول به نام جدول ناشرین و یک جدول به نام جدول کتاب ها داریم. رابطه این دو جدول ، یک به چند است یعنی یک ناشر میتواند چندین کتاب را منتشر کرده باشد.
حالات Join مختلفی که در عکس بالا میبینید ، در تصویر به شکل زیر پیاده سازی میشوند :
نحوه نوشتن کوئری Join در سیکوئل سرور به شکل زیر است :
در کوئری Join اگر میخواهید یک ستونی بیارید که اسمش در هر دو جدول مشترک هست ، بایدمشخص کنید که قصد دارید آن ستون را از کدام جدول لود کنید.
نوشتن کوئری Join ، تنها مختص دو جدول نیست و میتوانید تعداد بیشتری جدول را با هم Join بزنید. ، برای مثال در کوئری زیر ابتدا DimCustomers را با FactInternetSales ، Left Join زده سپس سپس حاصل آن را با جدول Dim Product جوین میزنیم تا نام و ID کالاهای خریداری شده را نیز داشته باشیم.
در قسمت ON در کوئری Join ، ممکن است جدول ها را روی بیش از یک ستون با یکدیگر Join بزنیم ، این حالت بستگی به نیاز ما دارد و ضمنا خیلی معمول نیست و به ندرت پیش میاید که نیاز شود دو جدول را روی بیش از یک ستون با یکدیگر Join بزنیم.
نوشتن Join به تنهایی در کوئری هم ارز با همان Inner Join است.
یک مدل Join داریم که Self Join نامیده میشود و معادل این است که یک جدول را با خودش Join بزنیم.
یک جدول که شامل اطلاعات افراد و شهر محل سکونت آنهاست را در نظر بگیرید ، SelfJoin زدن در این جدول به ما کمک میکند تا افرادی که با یکدیگر در یک شهر زندگی میکنند را پیدا کنیم.
برای مثال کوئری زیر را در نظر بگیرید :
SELECT A.CustomerName AS CN1 , B.CustomerName AS CN2 , A.City
FROM Customers AS A , Customers AS B
WHERE A.CustomerID != B.CustomerID AND A.City = B.City
ORDER BY A.CITY
به طور کلی میتوان گفت Self Join یک نوع ضرب دکارتی است و جدول ی که از Self Join حاصل می شود ، تعداد سطر هایش مجذور تعداد سطر جدول اولیه می باشد.
* هر چه تعداد Join های داخل کوئری کمتر باشد سرعت اجرای کوئری بیشتر است.
ضمنا توجه کنید که بهتر است یک View را با سایر Object های ممکن ، Join نزنید.