Joins bruges til at kombinere to relaterede tabeller sammen.
I dit eksempel kan du kombinere tabellen medarbejder og afdelingstabellen, sådan:
SELECT FNAME, LNAME, DNAME
FROM
EMPLOYEE INNER JOIN DEPARTMENT ON EMPLOYEE.DNO=DEPARTMENT.DNUMBER
Dette ville resultere i et rekordsæt som:
FNAME LNAME DNAME
----- ----- -----
John Smith Research
John Doe Administration
Jeg brugte en INNER JOIN
over. INNER JOIN
s kombinere to tabeller, så kun poster med match i begge tabeller vises, og de er forenet i dette tilfælde på afdelingsnummeret (felt DNO i Medarbejder, DNUMMER i afdelingstabel).
LEFT JOIN
s giver dig mulighed for at kombinere to tabeller, når du har poster i den første tabel, men måske ikke har poster i den anden tabel. Lad os f.eks. sige, at du vil have en liste over alle medarbejdere plus eventuelle pårørende:
SELECT EMPLOYEE.FNAME as employee_first, EMPLOYEE.LNAME as employee_last, DEPENDENT.FNAME as dependent_last, DEPENDENT.LNAME as dependent_last
FROM
EMPLOYEE INNER JOIN DEPENDENT ON EMPLOYEE.SSN=DEPENDENT.ESSN
Problemet her er, at hvis en medarbejder ikke gør det har en afhængig, så vises deres post slet ikke -- fordi der ikke er nogen matchende post i DEPENDENT-tabellen.
Så du bruger en venstre join, som gemmer alle data til "venstre" (dvs. den første tabel) og trækker alle matchende data ind til "højre" (den anden tabel):
SELECT EMPLOYEE.FNAME as employee_first, EMPLOYEE.LNAME as employee_last, DEPENDENT.FNAME as dependent_first, DEPENDENT.LNAME as dependent_last
FROM
EMPLOYEE LEFT JOIN DEPENDENT ON EMPLOYEE.SSN=DEPENDENT.ESSN
Nu får vi alle af medarbejdernes optegnelser. Hvis der ikke er nogen matchende afhængig(e) for en given medarbejder, er dependent_first
og dependent_last
felter vil være nul.