آموزش SQL server - دستور OUTER JOIN - درس چهاردهم
قبلا دیدیم که چطور اطلاعات را با ایجاد اتصال بین دو جدول استخراج کردیم . در این حالت می خواهیم اطلاعات را از جدولی انتخاب کنیم صرفنظر ازینکه آنها در جدول دیگر ارائه شده اند یا خیر . برای اینکار باید از outer join استفاده کنیم .
این دستور در دیتابیس ها ، وابسته به نوع دیتابیس است . بطور مثال در اوراکل ما باید یک علامت "(+)" در کلمه where قرار دهیم .
Table Store_Information
|
store_name |
Sales |
Date |
|
|
$1500 |
Jan-05-1999 |
|
|
$250 |
Jan-07-1999 |
|
|
$300 |
Jan-08-1999 |
|
|
$700 |
Jan-08-1999 |
Table Geography
|
region_name |
store_name |
|
East |
|
|
East |
|
|
West |
|
|
West |
|
جداول بالا موجود است و ما میخواهیم فروش تمام فروشگاه ها را که در جدول Geography آمده بدست آوریم . اگر مااز حالت join معمولی استفاده کنیم اطلاعات درستی بدست نمی آوریم ، چون مقدار New York را در جدول دوم به ما نشان نخواهد داد . چرا ؟ چون این مقدار در جدول اولی موجود نیست .
SELECT A1.store_name, SUM(A2.Sales) SALES
FROM Georgraphy A1, Store_Information A2
WHERE A1.store_name = A2.store_name (+)
GROUP BY A1.store_name
توجه کنید که در کد بالا ما در حال استفاده از گرامر دستوری oracle هستیم .
نتیجه :
|
store_name |
SALES |
|
|
$700 |
|
|
|
|
|
$1800 |
|
|
$250 |
نکته : وقتی که رکوردی در جدول دوم همتایش موجود نباشد NULL برگردانده میشود . در این حالت New York در جدول Store_Information موجود نمی باشد .