Esta operação não é necessária a partir de um registro em uma tabela para ter um registro relacionado ao registro. O registro é mantido na tabela combinada, embora não haja correspondente na outra tabela.
Existem três tipos de combinações externas, a junção esquerda, a junção direita e a junção completa, onde todos os registros são tirados Da mesa à esquerda, ou toda a tabela direita, ou todos os registros respectivamente.
deixou junineditar
O resultado desta operação contém sempre todos os registros na tabela à esquerda (a primeira tabela mencionada na consulta), independentemente de haver um registro correspondente na tabela à direita.
A parte de junção esquerda declaração retorna o par de todos os valores da tabela esquerda com os valores da tabela correta correspondente, se houver ou retornar um valor nulo nulo nos campos do TA Blah direita quando não há correspondência.
Ao contrário do resultado apresentado nos exemplos de combinação interna em que o funcionário não foi mostrado cujo departamento não existia, no exemplo a seguir, os funcionários com seu respectivo departamento serão apresentados, e, além disso, um funcionário cujo departamento não existe. / p>
O funcionário que não tem apartamento está localizado na área amarela do diagrama à direita, enquanto funcionários com departamento estão na área laranja, na interseção de A e B.
Exemplo de junção esquerda para a combinação externa:
SELECT * FROM empleado LEFT OUTER JOIN departamento ON empleado.IDDepartamento = departamento.IDDepartamento
funcionário | departamento | sobrenome | iddepartment | nome | iddepartment | |
---|---|---|---|---|---|---|
33 | 33 | 33 | ||||
andrade | 31 | 31 | ||||
rólon | 34 | produção | 34 | |||
zolano | 34 | 34 | ||||
gaspar | 36 | null td | null | |||
steinberg | 33 | engenharia | 33 |
Left Letin excluindo a interseção
Se você quiser mostrar apenas os registros da primeira tabela que não têm correspondente no segundo, você pode adicionar a condição n adequado na cláusula WHERE. Isso nos dará funcionários que não são atribuídos a qualquer departamento, que no diagrama à direita são representados em amarelo.
SELECT * FROM empleado LEFT OUTER JOIN departamento ON empleado.IDDepartamento = departamento.IDDepartamento WHERE departamento.IDDepartamento IS NULL
junção externa direita ou junineditar direito
Esta operação é uma imagem refletida do anterior; O resultado desta operação contém sempre todos os registros na tabela à direita (a segunda tabela mencionada na consulta), independentemente de existir ou não um registro correspondente na tabela à esquerda. o SENTENÇA EXTERIOR DO EXTERIOR Retorna todos os valores da tabela certa com os valores da tabela esquerda correspondente, se houver ou retornar um valor nulo nulo nos campos na tabela esquerda quando não há correspondência.
No diagrama à direita, os departamentos que não têm funcionários estão na área verde, enquanto os departamentos de funcionários estão na área laranja, na interseção de A e B.
Ejemplo de direito Junte para la combinación externa:
SELECT * FROM empleado RIGHT OUTER JOIN departamento ON empleado.IDDepartamento = departamento.IDDepartamento
Empleado |
||
---|---|---|
Apellido |
||
Zolano
34 PRODUCCIÓN 34 |
||
Jordan
33 Ingeniería 33 |
||
Robinson
34 PRODUCCIÓN 34 |
||
Steinberg
33 Ingeniería 33 |
||
Andrade
31 Ventas 31 |
||
mais | mais
catálogo Cadeo 35 |
En Este Caso el Área de Mercadeo fue presentada en los resultados, aunque intensa ou Hay empleados registrados en dicha área.
Right Junte excluyendo la intersecciónEditar
Si se quieren Mostrar los Registros solo de Tabla de la Departamento de that tengan ou correspondientes en la Tabla de Empleado, é Puede agregar la adecuada condición en la cláusula Where. Nos segundo esto that los Departamentos ou tengan asignados ningún empleado. En el diagrama de la derecha, esto se represen en verde.
SELECT * FROM empleado RIGHT OUTER JOIN departamento ON empleado.IDDepartamento = departamento.IDDepartamento WHERE empleado.IDDepartamento IS NULL
Empleado |
||
---|---|---|
Apellido |
||
mais | mais
Mercadeo 35 |
equivalencia Entre Esquerda Junte-y direito JOINEditar
Hay una total de equivalencia entre las that usan sentencias Esquerda Junte-y las that usan Junte-direito. Todo lo que se puede hacer con uno se puede hacer con el otro. Cambiando la Perspectiva de Do es la Tabla izquierda y ouvido es la Tabla derecha, y teniendo Cuidado con las condiciones, é Puede hacer la sentencia equivalente.
Por ejemplo, hagamos el direito Junte anterior pero esta vez usando Esquerda Junte-se. Direito Junte-en el anterior é consideraba Empleado Tabla la la izquierda y la Tabla Departamento de la derecha. Para hacer un Esquerda Junte equivalente cambiamos de Perspectiva y “volteamos” Las Tablas. Consideremos Ahora la Tabla Departamento de la izquierda y la Tabla de la derecha Empleado. Podemos obtener Exactamente el mismo resultado con la sentencia siguiente:
SELECT * FROM departamento LEFT OUTER JOIN empleado ON departamento.IDDepartamento = empleado.IDDepartamento WHERE empleado.IDEmpleado IS NULL
Departamento |
|||
---|---|---|---|
NombreDepartamento |
|||
Mercadeo
35 |
mais | mais |
combinacion completa (Full junção externa) Editar
This operación presenta los resultados de Tabla Tabla izquierda derecha y aunque ou tengan correspondencia alguna en la Otra Tabla. La Tabla combinada contendrá, entonces, todos los registros de Ambas tablas y presentará Valores nulos nulos Pará Registros que pareja.
En el diagrama de la derecha, el Area anaranjada represen los empleados that están asociados a un departamento, área para amarilla el de los empleados that están en ningún ou departamento, y el verde área para Los que há Departamentos Tienen empleados.
Ejemplo de combinación externa completa:
SELECT * FROM empleado FULL OUTER JOIN departamento ON empleado.IDDepartamento = departamento.IDDepartamento
Empleado |
|||
---|---|---|---|
Apellido |
|||
Zolano
34 PRODUCCIÓN 34 |
|||
Jordan
33 Ingeniería 33 |
|||
Robinson
34 PRODUCCIÓN 34 |
|||
Gaspar
36 |
mais | mais | |
Andrade
31 Ventas |
|||
mais | mais
Mercadeo 35 |
Como se puede notar, en Este Caso se encuentra el empleado Gaspar con valor nulo en su Área correspondiente, y se muestra además el departamento de Mercadeo con valor nulo en los empleados de ESA Área.
Algunos Sistemas de bases de Dados ou soportan This funcinalidad, pero This puede ser emulada a traves de las combinaciones da Tabela izquierda, Tabela derecha y de la sentencia de União União.
El mismo ejemplo Puede expresarse así:
SELECT * FROM empleado LEFT JOIN departamento ON empleado.IDDepartamento = departamento.IDDepartamento UNION SELECT * FROM empleado RIGHT JOIN departamento ON empleado.IDDepartamento = departamento.IDDepartamento
completa excluyendo la intersecciónEditar
E Ela é quieren Mostrar Los de solo registros de Las Tablas that ou tengan correspondencia en la Otra, é pueden agregar las condiciones adecuadas en la cláusula Where.
En el diagrama de la derecha, amarilla el Area Representa los empleados that ou están asignados para ningún departamento, mientras que el Area verde represen los Departamentos que No empleados Tienen.
SELECT * FROM empleado FULL OUTER JOIN departamento ON empleado.IDDepartamento = departamento.IDDepartamento WHERE (empleado.IDDepartamento IS NULL) OR (departamento.IDDepartamento is NULL)
Empleado |
|||
---|---|---|---|
Apellido |
|||
Gaspar
36 |
mais | mais | |
mais | mais
Mercadeo 35 |