Unidad 4. Consultas multitabla (IV)


4.7. La composición interna INNER JOIN

Una composición interna es aquella en la que los valores de las columnas que se están combinando se comparan mediante un operador de comparación.
Es otra forma, mejor, de expresar un producto cartesiano con una condición.
Es la operación que más emplearemos ya que lo más frecuente es querer juntar los registros de una tabla relacionada con los registros correspondientes en la tabla de referencia (añadir a cada factura los datos de su cliente, añadir a cada línea de pedido los datos de su producto, etc..,).

FROM

<tabla_origen> INNER JOIN <tabla_origen> ON <condicion_combi> 

tabla_origen tiene el mismo significado que en el producto cartesiano.
condicion_combi es cualquier condición que permite seleccionar las parejas de filas que aparecen en el resultado. Normalmente será una condición de igualdad.

SELECT *

FROM empleados INNER JOIN oficinas

    ON  empleados.oficina=oficinas.oficina;

Obtiene los empleados combinados con los datos de su oficina.

SELECT *

FROM pedidos INNER JOIN productos 

    ON producto = idproducto AND fab =  idfab;

Obtiene los pedidos combinados con los productos correspondientes.

Normalmente la condición de combinación será una igualdad pero se puede utilizar cualquier operador de comparación (<>, >…).

Es fácil ver la utilidad de esta instrucción y de hecho se utilizará muy a menudo, pero hay algún caso que no resuelve. En las consultas anteriores, no aparecen las filas que no tienen fila correspondiente en la otra tabla.

SELECT numemp,nombre,empleados.oficina,  ciudad

FROM empleados INNER JOIN oficinas

   ON  empleados.oficina=oficinas.oficina;
numemp nombre oficina ciudad
101 Antonio Viguer 12 Alicante
102 Alvaro Jaumes 21 Badajoz
103 Juan Rovira 12 Alicante
104 José González 12 Alicante
105 Vicente Pantalla 13 Castellón
106 Luis Antonio 11 Valencia
107 Jorge Gutiérrez 22 A Coruña
108 Ana Bustamante 21 Badajoz
109 María Sunta 11 Valencia

No aparecen los empleados que no tienen oficina,  ni las oficinas que no tienen empleados, porque para que salga la fila, debe de existir una fila de la otra tabla que cumpla la condición.

Para resolver este problema debemos utilizar otro tipo de composición, la composición externa.

Para practicar puedes realizar este Ejercicio La composición interna INNER JOIN.

Febrero-2010
Pág. 4.4

Atrás  Inicio  Adelante






.