Combinar información de varias tablas mysql las unirse

Puede utilizar una UNIRSE SELECCIONAR consultar a combinar la información de más de una tabla de MySQL. Con JOIN, las tablas se combinan al lado del otro, y la información se recupera de las dos tablas.

Video: Consulta de 3 tablas SQL

Las tablas se combinan, haciendo coincidir los datos en una columna - la columna que tienen en común. La tabla de resultados combinada producida por una combinación contiene todas las columnas de ambas tablas. Por ejemplo, si tabla 1 tiene dos columnas (Identificación de miembro y altura), Y Tabla 2 tiene dos columnas (Identificación de miembro y peso), Una unión resultados en una tabla con cuatro columnas: Identificación de miembro (de tabla 1), altura, Identificación de miembro (de Tabla 2), Y peso.

Los dos tipos más comunes de combinaciones son una unir internamente y un combinación externa. La diferencia entre un interior y exterior se unen está en el número de filas incluido en la tabla de resultados.

  • Unir internamente: La tabla de resultados producidos por una combinación interna contiene sólo las filas que existían en ambas tablas.

  • Combinación externa: La tabla combinada producida por una combinación externa contiene todas las filas que existían en una tabla con espacios en blanco en las columnas correspondientes a las filas que no existían en la segunda tabla.

Por ejemplo, si tabla 1 contiene una fila para Juan y una fila para Sally, y Tabla 2 sólo contiene una fila para Sally, una combinación interna contendría sólo una fila: la fila para Sally. Sin embargo, una combinación externa para contener dos filas - una fila para Juan y una fila para Sally - a pesar de que la fila para Joe tendría un campo en blanco para peso.

Video: Relacionar dos tablas en MySQL

La tabla de resultados de la combinación externa contiene todas las filas de una tabla. Si cualquiera de las filas de la tabla que no existen en la segunda tabla, las columnas de la segunda tabla están vacíos. Claramente, el contenido de la tabla de resultados se determinan por el cual contribuye mesa todas sus filas, lo que requiere la segunda tabla para que coincidan.

Hay dos tipos de combinaciones externas de control que establece la tabla las filas, y que debe coincidir: una LEFT JOIN y una RIGHT JOIN.

Utiliza diferentes SELECCIONAR consultas para una unión interna y los dos tipos de combinaciones externas. La siguiente consulta es una combinación interna:

columnnamelist SELECT FROM tabla1, table2WHERE table1.col2 = table2.col2

Y estas consultas son combinaciones externas:

columnnamelist SELECT FROM tabla1 LEFT JOIN table2ON table1.col1 = table2.col2SELECT columnnamelist de derecha tabla1 JOIN table2ON table1.col1 = table2.col2

En las tres consultas, tabla 1 y Tabla 2 son las tablas a unir. Usted puede unirse a más de dos tablas. En ambas consultas, col1 y col2 son los nombres de las columnas que se adaptan a unir las tablas. Las tablas se corresponden con base en los datos de estas columnas. Estas dos columnas pueden tener el mismo nombre o nombres diferentes, pero deben contener el mismo tipo de datos.

Como ejemplo de interior y exterior se une, considere un catálogo de ropa con dos tablas. Una tabla es Producto, con las dos columnas Nombre y Tipo la celebración de los siguientes datos:

Nombre TypeT de la camisa de shirtdress ShirtJeans Pantalones

La segunda tabla está Color, con dos columnas Nombre y Color la celebración de los siguientes datos:

Video: Relacionar 2 tablas por consola en MySQL

Nombre colort-camisa-whiteT camisa redLoaferblack

Que necesita para hacer una pregunta que requiere información de ambas tablas. Si usted hace una combinación interna con la siguiente consulta:

* SELECT del producto, color DONDE Product.Name = Color.Name

se obtiene la tabla siguientes resultados con cuatro columnas: Nombre (de Producto), Tipo, Nombre (de Color), Y Color.

Nombre TypeName colort de la camisa de la camiseta de la camisa whiteT camiseta roja

Nótese que sólo camiseta aparece en la tabla de resultados - porque sólo camiseta fue en las dos tablas originales, antes de unirse. Por otro lado, supongamos que hace una combinación externa izquierda con la siguiente consulta:

SELECT * FROM LEFT JOIN Producto Producto Coloron. Name = color. Nombre

Se obtiene la siguiente tabla de resultados, con los mismos cuatro columnas - Nombre (de Producto), Tipo, Nombre (de Color), Y Color - pero con diferentes filas:

Nombre TypeName colort de la camisa de la camiseta de la camisa whiteT camiseta de la camisa camisa redDress Los pantalones vaqueros 

Esta tabla tiene cuatro filas. Tiene las mismas primeras dos filas como la unión interna, pero tiene dos filas adicionales - filas que están en el Producto tabla de la izquierda, pero no en el Color mesa. Tenga en cuenta que las columnas de la tabla Color son en blanco para las dos últimas filas.

Y, en la tercera parte, supongamos que se realice una unión exterior derecha con la siguiente consulta:

* SELECT FROM Producto RIGHT JOIN Coloron Product.petName = color. Nombre

Se obtiene la siguiente tabla de resultados, con los mismos cuatro columnas, pero todavía con diferentes filas:

Petname petType Petname petColorT de la camisa de la camiseta de la camisa whiteT camiseta rojamocasines de Negro

Tenga en cuenta que estos resultados contienen todas las filas para el Color tabla de la derecha, pero no para el Producto mesa. Observe los espacios en blanco en las columnas para el Producto mesa, que no tiene una fila de mocasines.

A veces es útil para averiguar qué filas de una tabla no tienen entradas coincidentes en otra mesa. Por ejemplo, suponga que desea saber que nunca ha iniciado sesión en las sección sólo para miembros. Suponga que tiene una tabla con el nombre de usuario del miembro (Miembro) Y otra tabla con las fechas de inicio de sesión (Iniciar sesión).

Puede hacer esta pregunta mediante la selección de las dos tablas. Usted puede averiguar qué nombres de usuario no tienen una entrada en el Iniciar sesión mesa con la siguiente consulta:

loginName SELECT DE IZQUIERDA pieza de enlace LoginON Member.loginName = Login.loginNameWHERE Login.loginName ES NULO

Esta consulta le da una lista de todos los nombres de usuario en el Miembro tabla que no están en el Iniciar sesión mesa.

Artículos Relacionados