-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathJOINS.sql
More file actions
108 lines (75 loc) · 2.66 KB
/
Copy pathJOINS.sql
File metadata and controls
108 lines (75 loc) · 2.66 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
97
98
99
100
CREATE TABLE my_companies
(
company_id CHAR(3),
company_name VARCHAR(20)
);
INSERT INTO my_companies VALUES(100, 'IBM');
INSERT INTO my_companies VALUES(101, 'GOOGLE');
INSERT INTO my_companies VALUES(102, 'MICROSOFT');
INSERT INTO my_companies VALUES(103, 'APPLE');
SELECT * FROM my_companies;
CREATE TABLE orders
(
company_id CHAR(3),
order_id CHAR(3),
order_date DATE
);
INSERT INTO orders VALUES(101, 11, '17-Apr-2020');
INSERT INTO orders VALUES(102, 22, '18-Apr-2020');
INSERT INTO orders VALUES(103, 33, '19-Apr-2020');
INSERT INTO orders VALUES(104, 44, '20-Apr-2020');
INSERT INTO orders VALUES(105, 55, '21-Apr-2020');
SELECT * FROM orders;
--- JOINS :
-- 1) INNER JOIN : Ortak (Common) datayı verir
-- 2) LEFT JOIN: Birinci table ın tüm datasını verir
-- 3) RIGHT JOIN:İkinci table ın tüm datasını verir
-- 4) FULL JOIN: İki table ın tüm datasını verir
-- 5) SELF JOIN:Tek table üzerinde çalışırken iki table varmış gibi çalışır
--1) INNER JOIN
--Ortak companyler için company_name, order_id ve order_date
--değerlerini çağırın.
SELECT company_name, order_id, order_date
FROM my_companies INNER JOIN orders
ON my_companies.company_id = orders.company_id;
-----Burada ortak olan alanları alıyoruz
SELECT company_name, o.order_id, o.order_date
FROM my_companies INNER JOIN orders
ON mc.company_id = o.company_id;
------Bu şekilde de yazılabilir
-- 2) LEFT JOIN
--my_companies table'ındaki companyler için order_id ve order_date
--değerlerini çağırın.
SELECT mc.company_name, o.order_id, o.order_date
FROM my_companies mc LEFT JOIN orders o
ON mc.company_id = o.company_id;
--3) RIGHT JOIN
--Orders table'ındaki company'ler için company_name, company_id
--ve order_date değerlerini çağırın.
SELECT mc.company_name, o.company_id, o.order_date
FROM my_companies mc RIGHT JOIN orders o
ON mc.company_id = o.company_id;
--FULL JOIN
--İki table'dan da company_name, order_id ve order_date değerlerini
--çağırın.
SELECT mc.company_name, o.order_id, o.order_date
FROM orders o FULL JOIN my_companies mc
ON mc.company_id = o.company_id;
----SELF JOIN----
CREATE TABLE workers
(
id CHAR(2),
name VARCHAR(20),
title VARCHAR(60),
manager_id CHAR(2)
);
INSERT INTO workers VALUES(1, 'Ali Can', 'SDET', 2);
INSERT INTO workers VALUES(2, 'John Walker', 'QA', 3);
INSERT INTO workers VALUES(3, 'Angie Star', 'QA Lead', 4);
INSERT INTO workers VALUES(4, 'Amy Sky', 'CEO', 5);
SELECT * FROM workers;
--workers tablosunu kullanarak çalışanların yöneticilerini
--gösteren bir tablo hazırlayın.
select employee.name,manager.name
from workers employee full join workers manager
on employee.manager_id= manager.id;