Outer joins
در مقابل بالاست و یعنی اینکه لازم نیست به ازای هر رکورد در یک جدول در دیگر هم وجود داشته باشد.
و به صورتهای زیر است:
left outer joins, right outer joins, and full outer joins
حالات ممکنLeft outer join:
تمام رکوردهای جدول اول بر می گردد و در صورتیکه رکورد متناظر در جدول دوم باشد مقدار آن در غیر اینصورت مقدار NULL بر می گردد. به مثال توجه کنید:
SELECT *
FROM employee
LEFT OUTER JOIN department
ON employee.DepartmentID = department.DepartmentID
Employee.LastName Employee.DepartmentID Department.DepartmentName Department.DepartmentID
Jones 33 Engineering 33
Rafferty 31 Sales 31
Robinson 34 Clerical 34
Smith 34 Clerical 34
Jasper 36 NULL NULL
Steinberg 33 Engineering 33
می بینید که رکوردهایی که در جدول اول بود همه انتخاب شدند اما در جدول دوم آنهایی که بودند و حائز شرط در جای مناسب قرار گرفتند و آنهایی که در جدول اول نظیر نداشتند NULL شدند.
Right outer join
این یکی برعکس بالایی است یعنی تمام رکوردهای جدول دوم بر میگردد و اگر رکورد منتناظری در جدول اول بود بر میگردد در غیر اینصورت آن فیلدها NULL خواهد بود مثال:
SELECT *
FROM employee
RIGHT OUTER JOIN department
ON employee.DepartmentID = department.DepartmentID
Employee.LastName Employee.DepartmentID Department.DepartmentName Department.DepartmentID
Smith 34 Clerical 34
Jones 33 Engineering 33
Robinson 34 Clerical 34
Steinberg 33 Engineering 33
Rafferty 31 Sales 31
NULL NULL Marketing 35
Full outer join
این یکی ترکیب حالات فوق است یعنی تمام رکوردهای جدول اول و دوم بر می گردد. اگر متناظر در جدول دیگر وجود داشت مقدار مناسب در غیر اینصورت NULL جایگزین فیلدها خواهد شد. مثال:
SELECT *
FROM employee
FULL OUTER JOIN department
ON employee.DepartmentID = department.DepartmentID
Employee.LastName Employee.DepartmentID Department.DepartmentName Department.DepartmentID
Smith 34 Clerical 34
Jones 33 Engineering 33
Robinson 34 Clerical 34
Jasper 36 NULL NULL
Steinberg 33 Engineering 33
Rafferty 31 Sales 31
NULL NULL Marketing 35