2. CONSULTA DE UNIÓN EXTERNA
La unión externa permite reunir registros de tablas
relacionadas considerando todos los registros de
una primera tablas aunque ninguno de los
registros de una segunda tabla presente aciertos
contra la primera, obviamente en ese caso los
campos de esta última tabla vendrán a nulo.
3. La reunión externa siempre se realizaran por la
izquierda o por la derecha, una de las dos. De este
modo expresamos el deseo de considerar todos
los registros de la tabla a la izquierda o a la
derecha de la cláusula OUTER JOIN, aunque no se
hallen coincidencias con la otra tabla según la
cláusula ON.
CONSULTA DE UNIÓN EXTERNA
4. EJEMPLO
Veamos la consulta que muestra los cursos y sus
profesores aunque el curso no tenga profesor
asignado.
5. Como en este caso usamos LEFT OUTER JOIN, la tabla que de
la izquierda, es decir, la tabla CURSOS, será considerada por
completo aunque no tenga éxito la cláusula ON, en cuyo caso
los campos de la tabla situada a la derecha de la cláusula se
mostrarán a nulo.
Si invertimos el orden de las tablas y usamos RIGHT OUTER JOIN, o
simplemente RIGHT JOIN, expresión equivalente simplificada
aplicable también a LEFT JOIN, el resultado es el mismo.
6. Consulta que muestra todos los cursos acompañados del
profesor que lo imparte. Si el curso no tiene profesor definido o
bien el campo APELLIDOS no contiene una "E", los campos de
la tabla PROFESORES se mostrarán a nulo:
El resultado presenta para el curso 3 los campos de la tabla
PROFESORES a nulo porque el campo APELLIDOS del profesor que
lo imparte no contiene un "E". Para el curso 5 ocurre lo mismo pero
en este caso el motivo es además que no tiene profesor definido, con
que mucho menos podrá ser cierta la otra condición.
7. Ahora aplicamos el filtro del apellido en la cláusulaWHERE:
Observamos como la reunión externa se rompe puesto que la
cláusulaWHERE exige que el apellido del profesor contenga una "E",
dado que los cursos que no tienen profesor definido la consulta
devuelve el apellido a nulo, esta cláusula no se satisface por lo que
oculta el registro y la reunión externa carece de sentido, o si usted
quiere, la clausulaWHERE es aplicable a la tabla CURSOS pero no a la
tabla PROFESORES, puesto que en este caso no tiene sentido
realizar una reunión externa para que luego un filtro en la cláusula
WHERE la anule.
8. SINTESIS
Existen dos sintaxis para realizar las operaciones de
unión ya sea externa o interna, dependiendo del
SGBD. Basada en cláusula WHERE o bien basada en
cláusula INNER JOIN / OUTER JOIN. Lo ideal sería
dejar a criterio del desarrollador el uso de cualquiera
de ellas siempre y cuando el SGBD lo soporte.
En una unión externa debemos tratar siempre la tabla
cuyos campos pueden venir a nulo poniendo todos los
campos que establecen condiciones de dicha tabla en
la cláusula ON del OUTER JOIN, si lo hacemos en la
cláusula WHERE como filtro corriente la reunión
externa se rompe y carece de sentido.