Combine la información de varias tablas mysql con unirse

Puede utilizar un ÚNETE SELECT consultar para combinar la información de más de una tabla de MySQL. Con JOIN, las tablas se combinan lado a lado, y la información se recupera de ambas tablas.

Las tablas se combinan haciendo coincidir los datos en una columna - la columna que tienen en común. La tabla de resultados combinado producido por una combinación contiene todas las columnas de ambas tablas. Por ejemplo, si Mesa 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 Mesa 1), altura, Identificación de miembro (de Tabla 2), Y peso.

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

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

  • Combinación externa: El cuadro combinado producido por una combinación externa contiene todas las filas existentes en una tabla con espacios en blanco en las columnas de las filas que no existían en la segunda tabla.

Por ejemplo, si Mesa 1 contiene una fila para Joe 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 contendría dos filas - una fila para Joe y una fila para Sally - a pesar de que la fila para Joe tendría un campo en blanco para peso.

La tabla de resultados para la combinación externa contiene todas las filas de una tabla. Si alguna de las filas de esa tabla no existen en la segunda tabla, las columnas de la segunda tabla están vacías. Claramente, los contenidos 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 tabla muestra las filas y que debe coincidir: un LEFT JOIN y un RIGHT JOIN.

Utiliza diferentes SELECT 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 DERECHO tabla1 ÚNETE table2ON table1.col1 = table2.col2

En los tres consultas, Mesa 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 unirse a las mesas. Las tablas se comparan en base a 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 uniones interiores y exteriores, considere un catálogo de ropa con dos mesas. Una tabla es Producto, con las dos columnas Nombre y Escribe la celebración de los siguientes datos:

Nombre TypeT Camisa shirtdress ShirtJeans Pantalones

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

Nombre colort-shirt whiteT-shirt redLoaferblack

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

* SELECT FROM Producto, Color DONDE Product.Name = Color.Name

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

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

Nótese que sólo Camiseta aparece en la tabla de resultados - porque sólo Camiseta estuvo en ambas de las tablas originales, antes de la unión. Por otro lado, supongamos que usted hace una combinación externa izquierda con la siguiente consulta:

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

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

Nombre TypeName colort de la camisa de la camiseta whiteT de la camisa de la camiseta camisa redDress Shirt Jeans Pantalones 

Esta tabla tiene cuatro filas. Tiene las mismas dos primeras 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. Observe que las columnas de la tabla Color son en blanco para las dos últimas filas.

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

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

Usted obtiene la tabla de resultados siguiente, con los mismos cuatro columnas, pero con aún filas diferentes:

Petname petType Petname petColorT de la camisa de la camiseta whiteT de la camisa de la camiseta rojaHolgazanes 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 para Holgazanes.

A veces es útil para saber qué filas de una tabla no tienen entradas coincidentes en otra mesa. Por ejemplo, supongamos que usted quiere saber que nunca ha conectado a la sección Sólo sus miembros. Suponga que tiene una tabla con el nombre de inicio de sesión del miembro (Miembros) Y otra tabla con las fechas de inicio de sesión (Iniciar sesión).

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

LoginName SELECT DE IZQUIERDA Member LoginON Member.loginName = Login.loginNameWHERE Login.loginName IS NULL

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




» » » Combine la información de varias tablas mysql con unirse