عبارت right join در SQL
عبارت RIGHT JOIN
کلید واژه RIGHT JOIN تمام سطرهای جدول سمت راست (table_name2) را برمی گرداند حتی اگر هیچ داده متناظری برای آن در جدول سمت چپ (table_name1) وجود نداشته باشد.
فرم عبارت RIGHT JOIN:
FROM table_name1
RIGHT JOIN table_name2
ON table_name1.column_name=table_name2.column_name
در بعضی از پایگاه داده ها RIGHT JOIN به شکل RIGHT 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 |
می خواهیم تمام سفارشات (orderها) را لیست کنیم حتی اگر نام فردی در مقابل آن سفارش وجود نداشته باشد.
از دستور زیر استفاده می کنیم:
FROM Persons
RIGHT 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 |
34764 |
کلید واژه RIGHT JOIN تمام سطرهای جدول سمت راست (Orders) را برمی گرداند حتی اگر هیچ داده متناظری برای آن در جدول سمت چپ (Persons) وجود نداشته باشد.
برای مشاهده فیلم های آموزشی مقدماتی تا پیشرفته پایگاه داده SQLServer کلیک کنید.
- نوشته شده توسط امیر پهلوان صادق
- بازدید: 17822
دیدگاهها
در مثالی که در آموزش right join در SQL آورده اید کدام عبارت زیر صحیح است:
1- "حتی اگر برای سفارشی نامی نباشد "
2- یا این جمله درسته "این که حتی برای فردی سفارشی نباشد"؟
جلمه اول درست است.
مگر جوین بین دو جدول در مثال فوق به صورت زیر نیست
ON Persons.P_Id=Orders.P_Id
جایی که Pid ها برابر با هم باشند بین دو جدول
اما در نتیجه جوین مثال فوق در خروجی pid15 که فقط در جدول دوم است را هم آورده است که با شرط فوق نمیخواند
دلیلش چیست؟!
با سلام.
قبل اینکه به سوال تون پرداخته بشه باید دقت کنید که از چه JOINی استفاده کردید؟ LEFT ، RIGHT یا INNER؟
خوب در مثال بالا ما از Right Join استفاده کرده ایم و همان طور که گفته شد، در چنین jOINای تمام ردیف های جدول سمت راستی در نتیجه آورده خواهد شد.