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