عبارت left join در SQL
عبارت LEFT JOIN
کلید واژه LEFT JOIN تمام سطرهای جدول سمت چپ (table_name1) را برمی گرداند حتی اگر هیچ داده متناظری برای آن در جدول سمت راست (table_name2) وجود نداشته باشد.
فرم عبارت LEFT JOIN:
FROM table_name1
LEFT JOIN table_name2
ON table_name1.column_name=table_name2.column_name
در بعضی از پایگاه داده ها LEFT JOIN به شکل LEFT OUTER JOIN می باشد.
مثال:
جدول Persons:
P_Id | LastName | FirstName | Address | City |
---|---|---|---|---|
1 | Hansen | Ola | Timoteivn 10 | Sandnes |
2 | Svendson | Tove | Borgvn 23 | Sandnes |
3 | Pettersen | Kari | Storgt 20 | Stavanger |
جدول Orders:
O_Id | OrderNo | P_Id |
---|---|---|
1 | 77895 | 3 |
2 | 44678 | 3 |
3 | 22456 | 1 |
4 | 24562 | 1 |
5 | 34764 | 15 |
می خواهیم تمام افراد را لیست کنیم حتی اگر سفارشی در مقابل نام آن وجود نداشته باشد.
از دستور زیر استفاده می کنیم:
FROM Persons
LEFT JOIN Orders
ON Persons.P_Id=Orders.P_Id
ORDER BY Persons.LastName
نتیجه به شکل زیر خواهد شد:
LastName | FirstName | OrderNo |
---|---|---|
Hansen | Ola | 22456 |
Hansen | Ola | 24562 |
Pettersen | Kari | 77895 |
Pettersen | Kari | 44678 |
Svendson | Tove |
کلید واژه LEFT JOIN تمام سطرهای جدول سمت چپ (Persons) را برمی گرداند حتی اگر هیچ داده متناظری برای آن در جدول سمت راست (Orders) وجود نداشته باشد.
برای مشاهده فیلم های آموزشی مقدماتی تا پیشرفته پایگاه داده SQLServer کلیک کنید.
- نوشته شده توسط امیر پهلوان صادق
- بازدید: 31127
دیدگاهها
سلام و خسته نباشید من این LEFT و RIGHT رو قاطی کردم ...!
ممنون میشم راهنماییم کنید.
سلام
عبارت Left Join در SQL:
عبارت LEFT JOIN تمام سطرهای جدول سمت چپ را برمی گرداند حتی اگر هیچ داده متناظری برای آن در جدول سمت راست وجود نداشته باشد.
SELECT Persons.LastNam e, Persons.FirstNa me, Orders.OrderNo
FROM Persons
LEFT JOIN Orders
ON Persons.P_Id=Orders.P_Id
ORDER BY Persons.LastName
همان طور که در در مثال بالا مشاهده می کنید، جدول Person که با رنگ قرمز مشخص شده است، سمت چپ عبارت Left Join قرار دارد و طبق قانون باید تمام رکوردهای آن در خروجی لیست شود.
بنابراین کوئری بالا تمام افراد را لیست می کند حتی اگر سفارشی برای آنها در جدول order وجود نداشته باشد.
عبارت Right Join در SQL:
عبارت RIGHT JOIN تمام سطرهای جدول سمت راست را برمی گرداند حتی اگر هیچ داده متناظری برای آن در جدول سمت چپ وجود نداشته باشد.
راست و چپ یک چیز ضمنی است
یعنی جدولی که در ابتدا انتخاب میشود ؛جدول سمت چپ را برای ما تشکیل میدهد
و جدولی که رویش جوین لفت میزینم جدول دوم یا جدول سمت راست را تشکیل میدهد
با سلام.
اصطلاحا راست و چپ به این صورت هست که جدولی که اول میاد، جدول سمت چپ نامیده میشه و جدول دومی که میاد، جدول سمت راست و بیشتر در JOINکردن به کار میره.
سلام
در واقع این چهار دستور join همان معادل اشتراک و اجتماع مجموعه ها در ریاضی است اگر دو جدول را a , b بنامیم
inner join برابر است با اشتراک دو مجموعه (دو جدول)
left join برابر است با a اجتماع با ( a اشتراک b )
right join برابر است با b اجتماع با ( a اشتراک b )
full join برابر است با اجتماع دو مجموعه (دو جدول)
اینم نمودارش
مرسی جو از شکل هایی که قرار دادی کاملا متوجه شدم که چی به چی شد
سلام و خسته نباشید
لطفا در مورد left join بیشتر توضیح بدید و مثال بزنید!
*این سوال مصاحبه تخصصی بود!*
سلام
سعی می کنم مثال ارائه شده در بالا را بیشتر توضیح بدهم:SELECT Persons.LastNam e, Persons.FirstNa me, Orders.OrderNo
FROM Perso ns LEFT JOIN Orders
ON Persons.P_Id=Orders.P_Id
ORDER BY Persons.LastName
در این مثال جدول Persons با Orders جوین شده است و مدل استفاده شده left join است. یعنی تمام داده های جدول سمت چپ یعنی Persons که شامل LastName و FirstName است بدون در نظر گرفتن اشتراک در خروجی خواهند آمد. (تصور کنید، در یک select معمولی چه اتفاقی می افتد، در اینجا نیز تمام رکوردها لیست خواهند شد)
اما سوالی که مطرح می شود این است که به ازای رکوردهای بالا، فیلد OrderNo چگونه مقدار دهی می شود؟
برای آن دسته از داده های جدول Persons که در جدول Orders داده ثبت شده است، و به اصطلاح اشتراک وجود دارد، فیلد OrderNo مقداردهی خواهد شد و برای آنهایی که اشتراک وجود ندارد NULL در نظر گرفته خواهد شد.
یعنی ستون های NULL شده را نمایش میده؟
بله