Ga naar hoofdinhoud

EQUI JOIN

Equi join

Een EQUIJOIN is een term voor een categorie join waarbij het is-gelijk-teken gebruikt wordt om twee of meerdere tabellen aan elkaar te knopen. Joins die hiertoe behoren zijn bijvoorbeeld de NATURAL JOIN, JOIN USING en JOIN ON met het = teken. Het is ook mogelijk twee tabellen samen te voegen met een vergelijking in de WHERE. Deze joins horen niet tot de ANSI-standaard maar ze worden ondersteund in elk Database Management System.

Voorbeeld van een EQUI JOIN met de vergelijking in de WHERE. Alle tabellen die je gebruikt komen op de WHERE regel.

SELECT employees.last_name, departments.department_name
FROM employees, departments
WHERE employees.department_id = departments.department_id;
last_namedepartment_name
KingExecutive
KochharExecutive
De HaanExecutive
HunoldIT
ErnstIT
LorentzIT
MourgosShipping
RajsShipping
DaviesShipping
MatosShipping
VargasShipping
ZlotkeySales
AbelSales
TaylorSales
WhalenAdministration
HartsteinMarketing
FayMarketing
HigginsAccounting
GietzAccounting

Voorbeelden van een EQUI JOIN met de vergelijking in de JOIN ON. De uitvoer is in beide gevallen exact hetzelfde.

SELECT employees.last_name, departments.department_name
FROM employees
JOIN departments ON employees.department_id = departments.department_id;
last_namedepartment_name
KingExecutive
KochharExecutive
De HaanExecutive
HunoldIT
ErnstIT
LorentzIT
MourgosShipping
RajsShipping
DaviesShipping
MatosShipping
VargasShipping
ZlotkeySales
AbelSales
TaylorSales
WhalenAdministration
HartsteinMarketing
FayMarketing
HigginsAccounting
GietzAccounting
tip

Maar met een vergelijking in de WHERE kun je dus geen rijen tonen waarvan een van de kolommen NULL is. Met een LEFT JOIN ON kan dat wel en daarom is het verstandig jezelf aan te leren dat je altijd LEFT JOIN ON gebruikt.

Gebruik onderstaande query in plaats van de query met de vergelijking in de WHERE hierboven. Grant heeft geen department_name maar hij komt toch op het overzicht.

SELECT last_name, department_name
FROM employees
LEFT JOIN departments ON employees.department_id = departments.department_id;
last_namedepartment_name
KingExecutive
KochharExecutive
De HaanExecutive
HunoldIT
ErnstIT
LorentzIT
MourgosShipping
RajsShipping
DaviesShipping
MatosShipping
VargasShipping
ZlotkeySales
AbelSales
TaylorSales
GrantNULL
WhalenAdministration
HartsteinMarketing
FayMarketing
HigginsAccounting
GietzAccounting