Combinar Tablas

Publicado: 19 de febrero de 2015 en Actualidad

Combinar tablas – JOIN
Otros (Articulos) | Fecha: 20/09/06
Versiones
Editar
Envía tu artículo >>

Un join es una combinación de dos o más tablas de una base de datos relacional, es una instrucción de lo más imprescindible si queremos realizar una aplicación que realice un uso correcto e intensivo de un gestor de Bases de datos cómo MySQL.

Y es que gracias a los JOIN podemos leer datos de diferentes bases de datos en una única consulta. Lo que nos permitirá diseñar fácilmente tablas relacionadas entre ellas, veamos un ejemplo:

join.png
Figura 1: En este ejemplo podemos ver una relación entre las tablas de empleados y de despachos, y la representación de un join entre ambas

MySQL soporta muchas sintaxis diferentes para la instrucción JOIN en comandos de SELECT, DELETE y UPDATE.

Escribiremos la instrucción de JOIN en el apartado de referéncia de tablas ( el WHERE ) de nuestra consulta SQL, escojeremos la sintaxis de JOIN de las mencionadas anteriormente según el tipo de JOIN que queramos realizar.

A continuación se explican, con sus ejemplos en MySQL, los principales tipos de JOIN.

ArribaTabla de contenido

ArribaINNER JOIN o ,

Este tipo de JOIN une los resultados coincidentes en ambas tablas, no devolverá un registro de una tabla si no coincide con otro de la otra.

000
SELECT * FROM empleados,despachos WHERE empleados.despacho_id = despachos.id

selecc.gif Seleccionar colr.gif SQL

join_result_01.png

ArribaLEFT (RIGHT) JOIN

LEFT JOIN retorna los registros de la primera tabla aunque no coincidan con ninguno de la otra.

RIGHT JOIN realiza lo mismo pero en base a la segunda tabla.

000
SELECT * FROM empleados LEFT JOIN despachos ON empleados.despacho_id = despachos.id

selecc.gif Seleccionar colr.gif SQL

join_result_02.png

ArribaNATURAL JOIN

Este JOIN retorna los registros de ambas tablas que coincidan en todos los campos con el mismo nombre ( en el ejemplo empleados.nombre y despachos.nombre ).

RIGHT JOIN realiza lo mismo pero en base a la segunda tabla.

000
SELECT * FROM empleados NATURAL JOIN despachos

selecc.gif Seleccionar colr.gif SQL

join_result_03.png

Cursos

Cursos Cuestionarios Curso de MySQL Capítulo

3 votos

Combinar tablas – Subconsultas
Otros (Articulos) | Fecha: 02/10/13
Versiones
Editar
Envía tu artículo >>

Las subconsultas, introducidas en la versión 5 de mySQL, nos permiten combinar datos de tablas diferentes en una consulta determinada. Las subconsultas las delimitamos entre paréntesis y las podemos usar en muchas clausulas ( SELECT, WHERE, SET … ).

ArribaTabla de contenido

ArribaSubconsultas con un resultado

Vamos a ver un ejemplo sencillo de subconsulta en la que suponemos las siguientes tablas:
ejemplo-subquery.jpg
Dadas estas tablas, haremos una consulta que seleccione los despachos con el numero de empleados en cada despacho.

000
SELECT despachos.*, ( SELECT count(*) FROM empleados WHERE empleados.despacho_id = despachos.id ) as empleados FROM despachos

selecc.gif Seleccionar colr.gif SQL

También podríamos seleccionar los despachos que tienen más de 5 empleados poniendo la subconsulta en el WHERE:

000
SELECT despachos.* FROM despachos WHERE ( SELECT count(*) FROM empleados WHERE empleados.despacho_id = despachos.id ) > 5

selecc.gif Seleccionar colr.gif SQL

Una consideración a tener en cuenta y se cumple en los ejemplos anteriores es que la subconsulta debe estar diseñada para que siempre devuelva un único resultado y que éste resultado tenga una única columna. De lo contrario obtendremos un Error mySQL

ejemplo-subquery-2.jpg
La subconsulta sólo puede devolver una fila y una columna

ArribaSubconsultas con resultado array

Acabamos de explicar que una subconsulta sólo puede tener un resultado ( una fila y una columna ). Esto es así porqué al asignar un nombre de columna ‘( SUBCONSULTA ) as empleados’ o utilizar el operador ‘( SUBCONSULTA ) > 5’ tenemos un operador que espera un único parámetro.

En algunos casos podemos querer una subconsulta que nos retorne más de un resultado, por ejemplo imaginemos que tenemos la tabla despachos anterior y esta:

ejemplo-subquery-3.jpg

Y queremos obtener todas los despachos en una planta dirigida por ‘Jose María’ .

000
SELECT * FROM despachos WHERE planta IN ( SELECT id FROM plantas WHERE director = 'Jose María' )

selecc.gif Seleccionar colr.gif SQL

Suponiendo que hay 2 plantas dirigidas por ‘Jose María’ con id 1 y 3, el resultado de la subconsulta seria:

ejemplo-subquery-4.jpg

Con lo que la consulta seria equivalente a:

000
SELECT * FROM despachos WHERE planta IN ( 1, 3 )

selecc.gif Seleccionar colr.gif SQL

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s