یادداشت های یک برنامه نویس
دوستدار فرهنگ و هنر کهن ایرانی

Join in SQL


پرسش امنیتی

مقدار 17 به علاوه 1 چقدر میشود؟

دیدگاه شما پس از تایید نمایش داده خواهد شد.

انواع 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
------------------------