- Consultas Externas
Sintaxis:
Select tablaprincipal.campo, tablaacombinar.campo
From tablaprincipal
left join / right join / cross join tabla
on condición
- Left Join: Indica que muestre todos los resultados de la columna de la izquierda
- Right Join: Indica que muestre todos los resultados de la columna de la derecha
- Cross Join: Muestra un producto cartesiano combinando todos los resultados de las dos tablas.
Ejemplos 1:
SELECT APELLIDO,OFICIO,DNOMBRE FROM EMP LEFT OUTER JOIN DEPT ON EMP.DEPT_NO=DEPT.DEPT_NO ORDER BY DEPT.DNOMBRE
Si existiera algún empleado que no tenga asignado un departamento, la consulta traería los datos del empleado, pero el nombre del departamento tendría el valor null porque no tendría ningún departamento asociado y en la consulta le estamos diciendo que seleccione los empleados aunque no tengan departamento asociado, ponemos como principal la tabla de la izquierda (EMP).
Ejemplo 2:
SELECT APELLIDO,OFICIO,DNOMBRE FROM EMP RIGHT OUTER JOIN DEPT ON EMP.DEPT_NO=DEPT.DEPT_NO ORDER BY DEPT.DNOMBRE
En esta consulta el departamento de producción tiene valores null porque le hemos dicho que seleccione la tabla de la derecha como principal (dept), con lo cual selecciona todos los campos de la tabla departamentos con coincidencias con emp o sin ellas.
Ejemplo 3:
SELECT APELLIDO,OFICIO,DNOMBRE FROM EMP CROSS JOIN DEPT
Realiza un producto cartesiano combinando todos los empleados con todos los departamentos.
Combinaciones con mas de dos tablas
Ya hemos visto como combinar 2 tablas con inner join, el siguiente ejemplo muestra como combinar las 3 tablas que tenemos en la base de datos. Podremos combinar tantas tablas como queramos usando inner join o full join.
SELECT P.APELLIDO AS [APELLIDO] ,S.NOMBRE AS [SALA] ,H.NOMBRE AS [HOSPITAL], S.NUM_CAMA AS [Nº DE CAMAS] FROM PLANTILLA P INNER JOIN SALA AS S ON P.HOSPITAL_COD = S.HOSPITAL_COD AND P.SALA_COD = S.SALA_COD INNER JOIN HOSPITAL AS H ON H.HOSPITAL_COD = P.HOSPITAL_COD
Podremos usar tantos inner join como queramos en nuestras consultas, pero habrá que tener cuidado a la hora de realizar las combinaciones para que no salgan productos cartesianos en la consulta.
Esta consulta devuelve el nombre del empleado, el nombre de la sala donde trabaja, el nombre del hospital y el número de camas.
Combinar los valores de una tabla sobre sí misma
Para ello crearemos dos copias de la misma tabla poniéndole un alías, para posteriorme nte combinar los resultados de ambas copias.
SELECT A.EMP_NO AS [PRIMER EMPLEADO] ,A.APELLIDO,A.DEPT_NO ,B.EMP_NO AS [SEGUNDO EMPLEADO], B.APELLIDO FROM EMP AS A INNER JOIN EMP AS B ON A.EMP_NO = B.EMP_NO ORDER BY B.EMP_NO
Espero haber ayudado en algo. Hasta la próxima oportunidad!
Twittear
No hay comentarios:
Publicar un comentario