Join in SQL
انواع Join در SQLServer
جداول A و B را در نظر بگیرید:
|---------------------------|
| A Table | B Table |
|-------------|-------------|
| ID Title | ID Title |
| ---- ----- | ---- ----- |
| 1001 C | 2001 VB |
| 1002 ASP | 2002 C |
| 1003 C++ | 2003 R |
| 1004 Py | 2004 C++ |
|---------------------------|
دستور INNER JOIN (فقط دادهای مشترک):
SELECT * FROM A
INNER JOIN B
ON A.Title = B.Title
Result:
ID Title ID Title
---- ----- ---- -----
1001 C 2002 C
1003 C++ 2004 C++
------------------------
دستور FULL OUTER JOIN (همه ی داده های جداول):
SELECT * FROM A
FULL OUTER JOIN B
ON A.Title = B.Title
Result:
ID Title ID Title
---- ----- ---- -----
1001 C 2002 C
1002 ASP NULL NULL
1003 C++ 2004 C++
1004 Py NULL NULL
NULL NULL 2001 VB
NULL NULL 2003 R
------------------------
دستور LEFT/RIGHT OUTER JOIN (داده های مشترک + همه داده های جدول قبل/بعد از جوین):
SELECT * FROM A
LEFT OUTER JOIN B
ON A.Title = B.Title
Result:
ID Title ID Title
---- ----- ---- -----
1001 C 2002 C
1002 ASP NULL NULL
1003 C++ 2004 C++
1004 Py NULL NULL
------------------------
SELECT * FROM A
RIGHT OUTER JOIN B
ON A.Title = B.Title
Result:
ID Title ID Title
---- ----- ---- -----
NULL NULL 2001 VB
1001 C 2002 C
NULL NULL 2003 R
1003 C++ 2004 C++
------------------------
نمایش تنها داد های غیر مشترک از یک جدول:
SELECT * FROM A
LEFT OUTER JOIN B
ON A.Title = B.Title
Where B.ID IS null
Result:
ID Title ID Title
---- ----- ---- -----
1002 ASP NULL NULL
1004 Py NULL NULL
------------------------
SELECT * FROM A
RIGHT OUTER JOIN B
ON A.Title = B.Title
Where A.ID IS null
Result:
ID Title ID Title
---- ----- ---- -----
NULL NULL 2001 VB
NULL NULL 2003 R
------------------------
نمایش تنها داد های غیر مشترک همه جداول:
SELECT * FROM A
FULL OUTER JOIN B
ON A.Title = B.Title
Where A.ID IS null
OR B.ID IS null
Result:
ID Title ID Title
---- ----- ---- -----
1002 ASP NULL NULL
1004 Py NULL NULL
NULL NULL 2001 VB
NULL NULL 2003 R
------------------------