As junções são usadas para combinar duas tabelas relacionadas.
No seu exemplo, você pode combinar a tabela Employee e a tabela Department, assim:
SELECT FNAME, LNAME, DNAME
FROM
EMPLOYEE INNER JOIN DEPARTMENT ON EMPLOYEE.DNO=DEPARTMENT.DNUMBER
Isso resultaria em um conjunto de registros como:
FNAME LNAME DNAME
----- ----- -----
John Smith Research
John Doe Administration
Eu usei um
INNER JOIN
acima de. INNER JOIN
s combinam duas tabelas para que somente registros com correspondências em ambas as tabelas são exibidos e são unidos neste caso, no número do departamento (campo DNO em Employee, DNUMBER na tabela Department). LEFT JOIN
s permitem combinar duas tabelas quando você tem registros na primeira tabela, mas pode não tem registros na segunda tabela. Por exemplo, digamos que você queira uma lista de todos os funcionários, mais os dependentes: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
O problema aqui é que se um funcionário não tiver um dependente, seu registro não será exibido - porque não há registro correspondente na tabela DEPENDENT.
Então, você usa uma esquerda join que mantém todos os dados à "esquerda" (ou seja, a primeira tabela) e puxa todos os dados correspondentes à "direita" (a segunda tabela):
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
Agora temos todos dos registros dos funcionários. Se não houver dependente(s) correspondente(s) para um determinado funcionário, o
dependent_first
e dependent_last
campos serão nulos.