Spojení se používají ke spojení dvou souvisejících tabulek dohromady.
Ve vašem příkladu můžete zkombinovat tabulku Zaměstnanci a tabulku Oddělení, například takto:
SELECT FNAME, LNAME, DNAME
FROM
EMPLOYEE INNER JOIN DEPARTMENT ON EMPLOYEE.DNO=DEPARTMENT.DNUMBER
Výsledkem by byla sada záznamů jako:
FNAME LNAME DNAME
----- ----- -----
John Smith Research
John Doe Administration
Použil jsem INNER JOIN
výše. INNER JOIN
s kombinovat dvě tabulky tak, aby pouze záznamy se shodami v obou tabulkách jsou zobrazeny a jsou spojeny v tomto případě na číslo oddělení (pole DNO v Zaměstnanec, DČÍSLO v tabulce Oddělení).
LEFT JOIN
s vám umožní spojit dvě tabulky, když máte záznamy v první tabulce, ale nemusí mít záznamy ve druhé tabulce. Řekněme například, že chcete seznam všech zaměstnanců a všech závislých osob:
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
Problém je v tom, že pokud zaměstnanec nedělá mít závislého, pak se jeho záznam vůbec nezobrazí -- protože v tabulce DEPENDENT není žádný odpovídající záznam.
Takže použijete levé join, který uchovává všechna data „vlevo“ (tj. první tabulka) a vtahuje všechna odpovídající data „vpravo“ (druhá tabulka):
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
Nyní dostaneme vše ze zaměstnaneckých záznamů. Pokud pro daného zaměstnance neexistují žádné odpovídající závislé osoby, dependent_first
a dependent_last
pole budou mít hodnotu null.