Seosed
Joins
- Füüsiline seos – on lisatud Foreign key (constraint – piirang näiteks kontrollida diagrammil)
- Loogiline seos – kui õigesti kirjutada select joiniga
JOIN
--näitab kõik department, kus on olemas väärtus
select * from Employees join Department
on Employees.DepartmentId = Department.Id;

INNER JOIN
Sama asi nagu JOIN.
--näitab kõik department, 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
В результате такого запроса присутствуют все записи левой таблицы (в данном случае Country), несмотря на то есть ли соответстующие по join условию записи в таблице City. Значения, соответствие которым нет в таблице City заменяются в результирующем запросе значением NULL.
--näitab kõike departmentName (null väärtused)
select e.Name, e.Salary, d.DepartmentName
from Employees e left join Department d
on e.DepartmentId = d.Id;

RIGHT JOIN
В результате запроса присутствуют все записи из правой таблицы (City), несмотря на то есть ли соответстующие по join условию записи в таблице Country. Значения, соответствие которым нет в таблице Country заменяются в результирующем запросе значением NULL.
--näitab kõike department, isegi kui nad ei ole kasutatud
select e.Name, e.Salary, d.DepartmentName
from Employees e right join Department d
on e.DepartmentId = d.Id;

FULL OUTER JOIN
Kuvab kõik seosed, LEFT, JOIN, INNER
--outer join = outer full join
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äided
--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 d.DepartmentName is null;

Ülesanne
Teha kõik joinid, ja kirjutada mid nad näitavad kasutadeks uut tabelit Manager
INNER JOIN
--näita kõik employees kelle Manager on väärtusega
select e.Name, e.Salary, m.ManagerName
from Employees e inner join Manager m
on e.managerId =m.Id;

LEFT JOIN
--left join
--näita kõik employees, isegi kui Manager on null
select e.Name, e.Salary, m.ManagerName
from Employees e left join Manager m
on e.managerId =m.Id;

RIGHT JOIN
--right join
--näita kõik employees ja nende Manager, kellel on väärtus, ja näita kõik Manager kellel ei ole Employees
select e.Name, e.Salary, m.ManagerName
from Employees e right join Manager m
on e.managerId =m.Id;

FULL OUTER JOIN
--full outer join
--näita kõik seosed left, right, inner
select e.Name, e.Salary, m.ManagerName
from Employees e full outer join Manager m
on e.managerId = m.Id;

CROSS JOIN
--cross join
--Employees * Manager
select Name, Salary, ManagerName
from Employees cross join Manager;

Testid




