Tecnología

Inicio

MySQL se une a Tutorial

La instrucción JOIN en MySQL se utiliza para combinar datos de dos o más tablas en un conjunto común. Las tablas se combinan a través de una columna común en cada tabla. Las columnas no tienen que tener el mismo nombre, pero deben contener el mismo tipo de datos. MySQL se ajusta a la mayoría, pero no todas, de las limitaciones de SQL estándar para las combinaciones. Se une se puede utilizar en SELECT, UPDATE y DELETE. Este artículo se centrará en la instrucción SELECT.

Las uniones interiores

En las tablas siguientes se utilizarán para ilustrar cada una de las uniones:

dirección
fnombre lname staddress postal
Kris Miller 301 en cualquier lugar St 17598
Steve Fetterhoff 305 St. a otra parte Ave 17989
James Smith 623 Kensington Ct 98539

cremallera
código postal
Lancaster PA 17598
Wiconisco PA 17989
Orange CA 98539

Las uniones interiores se combinan los valores de las dos mesas y combinándolas para producir los resultados. Vuelven sólo los registros que cumplan los requisitos se unen, y ninguno que no lo hacen.

Cross se une al tomar cada fila de una tabla y unirlo a cada fila de la segunda tabla con la sintaxis:

* SELECT dirección, código postal
IR

Puede reemplazar la coma en el ejemplo anterior, con la palabra clave JOIN.

* SELECT dirección postal JOIN
IR

Estas declaraciones produce los siguientes resultados:

| Kris | Miller | 301 En cualquier lugar St | 17598 | Lancaster | PA | 17598 |

| Steve | Fetterhoff | 305 St. AVE en otra parte | 17989 | Lancaster | PA | 17598 |

| James | Smith | 623 Kensington Ct | 98539 | Lancaster | PA | 17598 |

| Kris | Miller | 301 En cualquier lugar St | 17598 | Wiconisco | PA | 17989 |

| Steve | Fetterhoff | 305 St. AVE en otra parte | 17989 | Wiconisco | PA | 17989 |

| James | Smith | 623 Kensington Ct | 98539 | Wiconisco | PA | 17989 |

| Kris | Miller | 301 En cualquier lugar St | 17598 | naranja | CA | 98539 |

| Steve | Fetterhoff | 305 St. AVE en otra parte | 17989 | naranja | CA | 98539 |

| James | Smith | 623 Kensington Ct | 98539 | naranja | CA | 98539 |

Por estas dos tablas, los resultados no son realmente útiles. Ellos simplemente se muestra una combinación de las dos tablas en una sola mesa.

Un Equi Ingreso o Ingreso Regular es una combinación cruzada con una cláusula WHERE restrictiva.

fnombre SELECT, lname, staddress, ciudad, estado, zip.zip dirección FROM, postal cuando address.zip = zip.zip
IR

o el uso de la palabra clave JOIN, como:

address.fname SELECT, address.lname, address.staddress, zip.city, zip.state, zip.zip DE dirección postal ÚNETE EN address.zip = zip.zip
IR

Esta combinación devuelve las direcciones, y la sintaxis exacta crea una lista de correo con formato correcto.

| Kris | Miller | 301 En cualquier lugar St | Lancaster | PA | 17598 |

| Steve | Fetterhoff | 305 St. AVE en otra parte | Wiconisco | PA | 17989 |

| James | Smith | 623 Kensington Ct | naranja | CA | 98539 |

La notación "zip.zip" dice que use el código postal de la tabla postal. Esta notación permite definir exactamente qué se deben devolver columnas. Si el nombre de la columna no se repite en ambas tablas, que no es necesario utilizar la notación "table.column", pero si se repite, debe especificar qué tabla usar.

También puede crear esta declaración mediante el uso de la cláusula USING. Para la cláusula USING para trabajar, cada tabla debe contener una columna común (en este ejemplo, la columna común sería 'zip'). La declaración revisada sería la siguiente:

fnombre SELECT, lname, staddress, ciudad, estado, zip.zip DE dirección postal JOIN utilizando ZIP;

Combinaciones externas

Las combinaciones externas combinar dos o más tablas, pero no requiere que las tablas combinadas contienen registros coincidentes. En otras palabras, dependiendo del tipo de combinación externa que se solicita, puede haber una fila o filas que tienen valores NULL en las columnas de datos para una de las tablas. Las combinaciones externas puede ser ya sea hacia la izquierda o la derecha se une.

Con el fin de proporcionar ejemplos de esta sección, el siguiente registro se añadirá a la tabla de direcciones:

Pam Kasper 501 W 69th St 80907

Y, el siguiente registro se añadirá a la tabla postal:

New York NY 50647

A la izquierda de combinación devuelve todos los registros que coinciden con la consulta más los registros no coincidentes en la tabla izquierda de la combinación.

fnombre SELECT, lname, staddress, ciudad, estado, zip.zip dirección FROM LEFT JOIN postal USAR (zip)
IR

Los resultados serían los siguientes:

Kris | Miller | 301 En cualquier lugar St | Lancaster | PA | 17598 |

| Steve | Fetterhoff | 305 St. AVE en otra parte | Wiconisco | PA | 17989 |

| James | Smith | 623 Kensington Ct | naranja | CA | 98539 |

| pam | Kasper | 501 W 69th St | NULL | NULL | NULO

Como se puede ver, todos los registros de la tabla de la izquierda (dirección) se devuelven, con valores NULL para los registros faltantes de la tabla derecha.

A la derecha de unión es lo contrario de una combinación izquierda.

fnombre SELECT, lname, staddress, ciudad, estado, zip.zip dirección FROM RIGHT JOIN postal USAR (zip)
IR

| Kris | Miller | 301 En cualquier lugar St | Lancaster | PA | 17598 |

| Steve | Fetterhoff | 305 St. AVE en otra parte | Wiconisco | PA | 17989 |

| James | Smith | 623 Kensington Ct | naranja | CA | 98539 |

| NULL | NULL | NULL | Nueva York | Nueva York | 50647 |​​