database - join sql server - ¿Cuál es la diferencia entre "INNER JOIN" y "OUTER JOIN"?

left outer join / sql / join / inner-join / outer-join

Además, ¿cómo encajan LEFT JOIN , RIGHT JOIN y FULL JOIN ?

Martin Smith



Answer #1
empid   name    dept_id salary
1       Rob     1       100
2       Mark    1       300
3       John    2       100
4       Mary    2       300
5       Bill    3       700
6       Jose    6       400
deptid  name
1       IT
2       Accounts
3       Security
4       HR
5       R&D

Averigüe todos los empleados y los nombres de sus departamentos:

Select a.empid, a.name, b.name as dept_name
FROM emp a
JOIN department b
ON a.dept_id = b.deptid
;

empid   name    dept_name
1       Rob     IT
2       Mark    IT
3       John    Accounts
4       Mary    Accounts
5       Bill    Security

Como puede ver arriba, Jose no se imprime desde EMP en la salida ya que su dept_id 6 no encuentra una coincidencia en la tabla Departamento. Del mismo modo, las filas de HR e R&D no se imprimen desde la tabla Departamento , ya que no encontraron una coincidencia en la tabla Emp.

Esto devuelve todos los registros de la tabla IZQUIERDA y sólo los registros coincidentes de la tabla DERECHA.

Select a.empid, a.name, b.name as dept_name
FROM emp a
LEFT JOIN department b
ON a.dept_id = b.deptid
;

empid   name    dept_name
1       Rob     IT
2       Mark    IT
3       John    Accounts
4       Mary    Accounts
5       Bill    Security
6       Jose