Tablas
La reunión de tablas consiste en concatenar filas de una tabla con filas de otra. En este caso obtenemos una tabla con las columnas de la primera tabla unidas a las columnas de la segunda tabla, y las filas de la tabla resultante son concatenaciones de filas de la primera tabla con filas de la segunda tabla.
A diferencia de la unión la reunión permite obtener una filacon datos de las dos tablas, esto es muy útil cuando queremos visualizar filas cuyos datos se encuentran en dos tablas.
Por ejemplo queremos listar los pedidos con el nombre del representante que ha hecho el pedido, pues los datos del pedido los tenemos en la tabla de pedidos pero el nombre del representante está en la tabla de empleados y además queremos que aparezcan en la misma línea; en estecaso necesitamos componer las dos tablas (Nota: en el ejemplo expuesto a continuación, hemos seleccionado las filas que nos interesan).
Existen distintos tipos de reunión, aprenderemos a utilizarlos todos y a elegir el tipo más apropiado a cada caso.
Los tipos de reunión de tablas son:
• Producto Cartesiano (combinaciones cruzadas CROSS JOIN)
• Reuniones
• reuniones internas INNERJOIN
• reuniones externas
LEFT OUTER JOIN o LEFT JOIN
RIGHT OUTER JOIN o RIGHT JOIN
FULL OUTER JOIN o FULL JOINEL PRODUCTO CARTESIANO
El producto cartesiano es un tipo de reunión de tablas, aplicando el producto cartesiano a dos tablas se obtiene una tabla con las columnas de la primera tabla unidas a las columnas de la
segunda tabla, y las filas de la tabla resultante son todas lasposibles concatenaciones de filas
de la primera tabla con filas de la segunda tabla. La sintaxis es la
siguiente:
El producto cartesiano se indica poniendo en la FROM las tablas que queremos componer separadas por comas, podemos obtener así el producto cartesiano de dos, tres, o más tablas. nbtabla puede ser un nombre de tabla o un nombre de consulta.
Hay que tener en cuenta que elproducto cartesiano obtiene todas las posibles combinaciones de filas por lo tanto si tenemos dos tablas de 100 registros cada una, el resultado tendrá 100x100 filas, si el producto lo hacemos de estas dos tablas con una tercera de 20 filas, el resultado tendrá 200.000 filas (100x100x20) y estamos hablando de tablas pequeñas. Se ve claramente que el producto cartesiano es una operación costosa sobretodo si operamos con más de dos tablas o con tablas voluminosas.
Se puede reunir una tabla consigo misma, en este caso es obligatorio utilizar un nombre de alias por lo menos para una de las dos.
Por ejemplo:
SELECT * FROM empleados, empleados empEn este ejemplo obtenemos el producto cartesiano de la tabla de empleados con ella misma.
Todas las posibles combinaciones de empleados conempleados. Esta operación no es de las más utilizadas, normalmente cuando queremos reunir dos tablas es para añadir a las filas de una tabla, una fila de la otra tabla, por ejemplo añadir a los pedidos los datos del cliente correspondiente, o los datos del representante, esto equivaldría a un producto cartesiano con una selección de filas:
SELECT * FROM pedidos,clientes
WHEREpedidos.clie=clientes.numclie
Combinamos todos los pedidos con todos los clientes pero luego seleccionamos los que cumplan que el código de cliente de la tabla de pedidos sea igual al código de cliente de la tabla de clientes, por lo tanto nos quedamos con los pedidos combinados con los datos del cliente correspondiente.
Las columnas que aparecen en la cláusula WHERE de nuestra consulta anterior se denominan columnasde emparejamiento ya que permiten emparejar las filas de las dos tablas. Las columnas de emparejamiento no tienen por qué estar incluidas en la lista de selección.
Normalmente emparejamos tablas que están relacionadas entre sí. Para esos casos también es posible usar el tipo de reunión INNER JOIN.
Ejemplo:
SELECT * FROM pedidos INNER JOIN clientes ON pedidos.clie = clientes.numclie
•...
Regístrate para leer el documento completo.