سبد (0)

تبلیغات

عبارت left join در SQL

عبارت LEFT JOIN

Wiki

کلید واژه LEFT JOIN تمام سطرهای جدول سمت چپ (table_name1) را برمی گرداند حتی اگر هیچ داده متناظری برای آن در جدول سمت راست (table_name2) وجود نداشته باشد. 

فرم عبارت LEFT JOIN:

SELECT column_name(s)
FROM table_name1
LEFT JOIN table_name2
ON table_name1.column_name=table_name2.column_name

در بعضی از پایگاه داده ها LEFT JOIN به شکل LEFT OUTER JOIN می باشد.


مثال:

Wiki

جدول 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

می خواهیم تمام افراد را  لیست کنیم حتی اگر سفارشی در مقابل نام آن وجود نداشته باشد. 

از دستور زیر استفاده می کنیم:

SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
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 کلیک کنید.

دیدگاه‌ها  

-2 # nahid1 1395-12-24 20:09
سلام و خسته نباشید من این LEFT و RIGHT رو قاطی کردم ...!
ممنون میشم راهنماییم کنید.
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
0 # امیر پهلوان صادق 1395-12-25 08:14
سلام
عبارت 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 تمام سطرهای جدول سمت راست را برمی گرداند حتی اگر هیچ داده متناظری برای آن در جدول سمت چپ وجود نداشته باشد.
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
+2 # امیرکیان 1395-04-20 20:49
راست و چپ یک چیز ضمنی است
یعنی جدولی که در ابتدا انتخاب میشود ؛جدول سمت چپ را برای ما تشکیل میدهد
و جدولی که رویش جوین لفت میزینم جدول دوم یا جدول سمت راست را تشکیل میدهد
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
+4 # مهرداد صلاحی 1395-04-22 20:02
با سلام.
اصطلاحا راست و چپ به این صورت هست که جدولی که اول میاد، جدول سمت چپ نامیده میشه و جدول دومی که میاد، جدول سمت راست و بیشتر در JOIN‌کردن به کار میره.
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
+18 # جو 1394-02-08 04:10
سلام
در واقع این چهار دستور join همان معادل اشتراک و اجتماع مجموعه ها در ریاضی است اگر دو جدول را a , b بنامیم
inner join برابر است با اشتراک دو مجموعه (دو جدول)
left join برابر است با a اجتماع با ( a اشتراک b )
right join برابر است با b اجتماع با ( a اشتراک b )
full join برابر است با اجتماع دو مجموعه (دو جدول)

اینم نمودارش



پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
0 # webnoos.com 1394-02-22 13:05
مرسی جو از شکل هایی که قرار دادی کاملا متوجه شدم که چی به چی شد
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
+2 # هیربد بهادری 1393-11-22 12:01
سلام و خسته نباشید
لطفا در مورد left join بیشتر توضیح بدید و مثال بزنید!
*این سوال مصاحبه تخصصی بود!*
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
+6 # امیر پهلوان صادق 1393-11-22 17:27
سلام
سعی می کنم مثال ارائه شده در بالا را بیشتر توضیح بدهم: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 در نظر گرفته خواهد شد.
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
+1 # هیربد بهادری 1393-11-24 22:23
یعنی ستون های NULL شده را نمایش میده؟
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
+3 # امیر پهلوان صادق 1393-11-25 08:13
بله
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن

آموزش صوتی SQL

بستن
مدرس:
سوال و جواب:

ابزاری که در پیش روی دارید یکی از ابزارهای بسیار کاربردی سایت بیاموز در زمینه آموزش است، این ابزار برای سهولت یادگیری شما کاربران محترم طراحی شده است.

فقط کافی است روی عنوان پاراگراف مورد نظرتان کلیک کنید تا پخش صدا آغاز شود ...!

تمامی محصولات و خدمات این وبسایت، حسب مورد دارای مجوزهای لازم از مراجع مربوطه می‌باشند و فعالیت‌های این سایت تابع قوانین و مقررات جمهوری اسلامی ایران است.
logo-samandehi مجوز نشر دیجیتال از وزرات فرهنگ و ارشاد اسلامی پرداخت آنلاین -  بانک ملت معرفی بیاموز در شبکه سه پرداخت آنلاین - بانک اقتصاد نوین پرداخت آنلاین - بانک سامان
 
دوره های آموزشی راه اندازی کسب و کارهای اینترنتی
تبلیغات اینترنتی