Join on

JOIN is de allerbelangrijkste manier om tabellen aan elkaar te knopen en daarom moet er heel veel geoefend worden met JOIN ON! JOIN ON werkt hetzelfde als JOIN USING maar JOIN ON kun je ook gebruiken als de kolomnamen van de twee verschillende tabellen niet exact hetzelfde zijn. Na ON benoem je dan de kolomnamen die aan elkaar gelijk moeten zijn. Eerst noem je de tabel, dan volgt er een punt en dan volgt de kolomnaam. Er zijn twee kolomnamen die je met elkaar wil vergelijken, maar ze heten anders. In de tabel employees heet de kolom salary en in de tabel job_grades heet de kolom lowest_sal. In onderstaand voorbeeld vergelijk je salary van employees met lowest_sal van job_grades. Deze personen zitten dus in de laagste salarisschaal van job_grade.

 

SELECT first_name, last_name, salary, lowest_sal, highest_sal, grade_level

FROM employees JOIN job_grades ON employees.salary = job_grades.lowest_sal;

 

Met aliassen maak je deze query als volgt wat netter.

 

SELECT e.first_name, e.last_name, e.salary, g.lowest_sal, g.highest_sal, g.grade_level

FROM employees e JOIN job_grades g ON e.salary = g.lowest_sal;

 

clip0280

 

 

Nog een voorbeeld van employees die het minimum salaris hebben van de job_id die ze hebben. De tabellen employees en jobs worden samengevoegd op kolommen die niet dezelfde kolomnaam hebben. Merk op dat salary twee decimalen heeft en dat min_salary en max_salary geen decimalen hebben. De kolom salary is van het type DECIMAL en de kolommen min_salary en max_salary zijn van het type INT.

 

SELECT e.first_name, e.last_name, e.salary, j.min_salary, j.max_salary

FROM employees e JOIN jobs j ON e.salary = j.min_salary;

 

clip0283

 

 

JOIN ON werkt uiteraard ook als de kolomnamen van de verschillende tabellen wel hetzelfde zijn.

 

SELECT last_name, job_title

FROM employees JOIN jobs ON employees.job_id = jobs.job_id;

 

clip0137

 

 

Het is mogelijk drie of meer tabellen te gebruiken om alle informatie in één uitvoer te zetten. Voor de leesbaarheid kun je dan de joins onder elkaar zetten.

 

SELECT last_name, department_name, city

FROM employees

 JOIN departments ON (employees.department_id = departments.department_id) 

 JOIN locations ON departments.location_id = locations.location_id;

 

clip0136