-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path14-Self_join.sql
More file actions
96 lines (85 loc) · 1.68 KB
/
14-Self_join.sql
File metadata and controls
96 lines (85 loc) · 1.68 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
create table tblOffice
(
EmployeeID Int NOT NULL identity(1,1) Primary key,
Name nvarchar(50) NOT NULL,
ManagerID int NULL,
)
--insert data into tblOffice tabel
insert into tblOffice(name, ManagerID) values ('Mike', 3),('Rob', 1), ('Todd', NULL), ('Ben',1), ('Sam', 1);
--show data
select * from tblOffice
/*
Joining a table wiht itselt-self join
*Self join can be classified as
* Inner self join
* Outer self join(Left, Right and Full)
* Cross self Join
--Left outer self Join
select E.Name as Employee , M.name as Maneager
From tblOffice E
LEFT JOIN tblOFFICE M
ON E.ManagerID = M.EmployeeID
--Inner self join
select E.Name as Employee , M.name as Maneager
From tblOffice E
inner JOIN tblOFFICE M
ON E.ManagerID = M.EmployeeID
--CROSS self join
select E.Name as Employee , M.name as Maneager
From tblOffice E
CROSS JOIN tblOFFICE M
*/
--Self left join
Select E.name as Employee, M.name as Manager
from tblOffice E
Left JOIN tbloffice M
ON E.ManagerID = M.EmployeeId
/*
Mike Todd
Rob Mike
Todd NULL
Ben Mike
Sam Mike
*/
--Self inner join
Select E.name as Employee, M.name as Manager
from tblOffice E
inner JOIN tbloffice M
ON E.ManagerID = M.EmployeeId
/*
Mike Todd
Rob Mike
Ben Mike
Sam Mike
*/
--Self cross join
Select E.name as Employee, M.name as Manager
from tblOffice E
cross JOIN tbloffice M
/*
Mike Mike
Rob Mike
Todd Mike
Ben Mike
Sam Mike
Mike Rob
Rob Rob
Todd Rob
Ben Rob
Sam Rob
Mike Todd
Rob Todd
Todd Todd
Ben Todd
Sam Todd
Mike Ben
Rob Ben
Todd Ben
Ben Ben
Sam Ben
Mike Sam
Rob Sam
Todd Sam
Ben Sam
Sam Sam
*/