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.
Síguenos en: Facebook Sobre aulaClic Política de Cookies
© aulaClic S.L. Todos los derechos reservados. Prohibida la reproducción por cualquier medio.