Päringud mitme tabeli põhjal

–seosed login

–füsiline seos – on lisatud Foreign ket (constraint – piirant näiteks kontrollida diagrammi)
–loohiline seos – kui õigesti kirjutada select joiniga

--join
select * from Employees JOIN Department
ON Employees.DepartmentId=Departme
--kirjutamine lihtsamaks
select e.Name, e.Salary, d.DepartamentName
from Employees JOIN Department d
ON Employees.DepartmentId=Department.Id


--inner join 
--näitab kõik departament, kus on olemas väärtus
select e.Name, e.Salary, d.DepartmentName
from Employees e  INNER JOIN Department d
ON e.DepartmentId=d.Id;
--left join 
select e.Name, e.Salary, d.DepartmentName
from Employees e  LEFT JOIN Department d
ON e.DepartmentId=d.Id;
-- right join== right outer join
--näitab Department kus nimi on null
select e.Name, e.Salary, d.DepartmentName
from Employees e  RIGHT JOIN Department d
ON e.DepartmentId=d.Id;
-- outer join 
--näitab kõik väärtused 
select e.Name, e.Salary, d.DepartmentName
from Employees e  FULL OUTER  JOIN Department d
ON e.DepartmentId=d.Id;
--cross join 
--näitab nii, et 1.tabeli väärtused * 2.tabeli väärtused
select Name, Salary, DepartmentName
from Employees CROSS JOIN Department 
-- näidata ainult need isikud kellel departmentName on null
select e.Name, e.Salary, d.DepartmentName
from Employees e  LEFT JOIN Department d
ON e.DepartmentId=d.Id
where DepartmentName is NULL;

–teha kõik joinid
–ja kirjutada mida nad näitavad

Näitab ainult töötajad, kelle osakonnal on teadaolev manager.

SELECT e.Name, d.DepartmentName, m.ManagerName
FROM Employees e
INNER JOIN Department d ON e.DepartmentId = d.Id
INNER JOIN Manager m ON d.DepartmentHead = m.ManagerName;

Kõik töötajad, isegi kui manageri ei leita (ManagerName on NULL).

SELECT e.Name, d.DepartmentName, m.ManagerName
FROM Employees e
LEFT JOIN Department d ON e.DepartmentId = d.Id
LEFT JOIN Manager m ON d.DepartmentHead = m.ManagerName;

Kõik managerid, isegi kui nad ei juhi ühtki töötajat.

SELECT e.Name, d.DepartmentName, m.ManagerName
FROM Employees e
RIGHT JOIN Department d ON e.DepartmentId = d.Id
RIGHT JOIN Manager m ON d.DepartmentHead = m.ManagerName;

Kõik töötajad ja kõik managerid, ka need kes pole seotud.

SELECT e.Name, d.DepartmentName, m.ManagerName
FROM Employees e
FULL OUTER JOIN Department d ON e.DepartmentId = d.Id
FULL OUTER JOIN Manager m ON d.DepartmentHead = m.ManagerName;

Kõik võimalikud kombinatsioonid töötajatest ja manageridest

SELECT e.Name, m.ManagerName
FROM Employees e
CROSS JOIN Manager m;

TEST: