بررسی مفهوم Join و انواع join ها (Inner, Left, Right,Full Join)در SqlServer
دستور Join یکی از پرکاربردترین دستورات در زبان T-Sql می باشد که شامل انواع محتلفی می باشد مثل Inner Join ، Left Join ، Right Join و …
در این مقاله هدف ما بررسی انواع Join نیست بلکه بررسی اصل مفهوم Join بوده که بیشتر در مورد درک بهتر ارتباط دادن دو جدول بحث می کنیم .
در زبان T-Sql این دستور را برای ترکیب کردن چند جدول و پیوند دیتای مشترک بین آنها استفاده می کنند . برای بدست آوردن نتیجه معنادار در دیتای درخواستی مورد نیاز می توان از دستور Join استفاده کرد و دیتا را از بیش از یک جدول واکشی کرد ، برای درک بهتر به مثال زیر دقت کنید :
در دیتابیس AdventureWorks2019 جدول Sales.SalesOrderHeader شامل فیلد SalesOrderID و این جدول برای سربرگ فروش محصولات می باشد:
و همچنین در جدولی دیگر با نام SalesOrderDetail که برای جزئیات سفارش فروش است فیلدی با نام SalesOrderID وجود داشته که همتای فیلد SalesOrderID جدول قبلی می باشد:
حال فرض کنید از ما خواسته شده که سربرگ ها و جزئیات سفارشات فروش برای بازه تاریخی 2011-05-31 الی 2011-12-30 را واکشی کنیم .
در مرحله اول باید در جدول اول کوئری بزنیم و جزئیات جدول اول را ببینیم :
SELECT TOP(10) * FROM Sales.SalesOrderHeader
و در مرحله بعد جزئیات جدول بعدی را مشاهده کرده تا فیلد مشترکی بین دو جدول پیدا کرده و Join را برقرار کنیم . در این دو جدول فیلد SalesOrderID مشترکا جفت هم می باشند و می توانیم ارتباط را به شکل زیر برقرار کنیم :
/****** SQLDBA.IR ******/
SELECT * FROM Sales.SalesOrderHeader
JOIN Sales.SalesOrderDetail
ON SalesOrderDetail.SalesOrderID = SalesOrderHeader.SalesOrderID
WHERE OrderDate BETWEEN '2011-05-31' AND '2011-12-30'
حالت ساده تر این اسکریپت را می توان با خصوصیت Alias استفاده کرد مثلا کلمه H برای جدول SalesOrderHeader و کلمه D برای جدول SalesOrderDetail به عنوان Alias انتخاب می کنیم مثل اسکریپت زیر :
/****** SQLDBA.IR ******/
SELECT * FROM Sales.SalesOrderHeader H
JOIN Sales.SalesOrderDetail D
ON D.SalesOrderID = H.SalesOrderID
WHERE OrderDate BETWEEN '2011-05-31' AND '2011-12-30'
در این مقاله ساده ترین حالت Join در SQL را پیاده سازی کردیم ، البته اگر مفهوم Join را به خوبی درک کرده باشید برای پرس و جو های سخت تر و پیچیده تر نیز مشکلی نداشته و می توانید از همین الگو پیروی کنید .
برای مطالعه و بررسی بیشتر می توانید به وب سایت مایکروسافت که در زیر آمده مراجعه کنید .
در SQL Server و دیگر سیستمهای مدیریت پایگاه داده رابطهای (RDBMS)، Join یک عملیات است که به شما امکان میدهد دادههای مرتبط از چندین جدول را با هم ترکیب کنید. Join در SQL Server برای ایجاد ارتباط بین جداول بر اساس یک شرط منطقی استفاده میشود.
هنگامی که دادهها در چندین جدول مختلف ذخیره شدهاند و شما نیاز دارید تا اطلاعاتی را از این جداول با یکدیگر ترکیب کنید، از Join استفاده میکنید. این عملیات بر اساس مقادیر مشابه در ستونهای دو جدول صورت میگیرد.
نوع Joinها میتوانند عبارت باشند از:
1. Inner Join: در Inner Join، ردیفهایی که شرایط Join بین دو جدول را برآورده میکنند، با یکدیگر ترکیب میشوند. تنها ردیفهایی که در هر دو جدول مقادیر مشابهی در ستون Join دارند، در نتیجه نهایی نمایش داده میشوند.
2. Left Join: در Left Join، تمام ردیفهای جدول سمت چپ (اولی) و ردیفهایی که شرایط Join را برآورده میکنند در نتیجه نمایش داده میشوند. اگر ردیفی در جدول سمت چپ وجود داشته باشد که شرایط Join را برآورده نکند، مقدار NULL به جای ستونهای جدول سمت راست (دومی) در نتیجه نمایش داده میشود.
3. Right Join: در Right Join، تمام ردیفهای جدول سمت راست (دومی) و ردیفهایی که شرایط Join را برآورده میکنند در نتیجه نمایش داده میشوند. اگر ردیفی در جدول سمت راست وجود داشته باشد که شرایط Join را برآورده
نکند، مقدار NULL به جای ستونهای جدول سمت چپ (اولی) در نتیجه نمایش داده میشود.
4. Full Join: در Full Join، تمام ردیفهای هر دو جدول و ردیفهایی که شرایط Join را برآورده میکنند در نتیجه نمایش داده میشوند. اگر ردیفی در هر دو جدول وجود نداشته باشد، مقدار NULL به جای ستونهای مربوطه در نتیجه نمایش داده میشود.
با استفاده از عبارت Join، شما میتوانید دادههای مرتبط از چندین جدول را به یکدیگر متصل کنید و اطلاعات کاملتری را در نتیجه نهایی بدست آورید. بسته به نیاز خود، نوع و شرایط Join مناسب را انتخاب کنید.
دیدگاه ها 1