Combinación interna INNER JOIN

En la lección anterior vimos la estructura general de una consulta multitabla:

MySQL 8.4
SELECT campos_tablas
FROM tabla_1
[INNER | {LEFT | RIGHT | FULL} [OUTER]] JOIN tabla_2
    ON condicion_combinacion
[...]
  • [ ]parte opcional
  • { a | b }una de las opciones
  • ...se puede repetir
campos_tablas

Las columnas de cualquiera de las tablas combinadas que aparecerán en el resultado.

tabla_1
La primera tabla, a la que se unen las demás.
INNER

Combinación interna: en el resultado solo aparecen las filas para las que se ha encontrado pareja. Es el tipo de combinación por defecto, así que puedes omitir INNER.

Palabra claveOpcional
LEFT | RIGHT | FULL

Combinación externa: izquierda, derecha o completa. Además de las parejas, en el resultado aparecen las filas sin pareja de la tabla izquierda, de la derecha o de ambas.

Palabra claveOpcional
OUTER

Solo subraya que la combinación es externa. Se escribe después de LEFT, RIGHT o FULL y no cambia el resultado.

Palabra claveOpcional
tabla_2

La tabla que se une. Para unir más tablas, añade para cada una su propio JOIN ... ON ....

condicion_combinacion

La regla por la que las filas de las dos tablas se encuentran entre sí, por ejemplo Payments.family_member = FamilyMembers.member_id.

En una consulta multitabla con combinación interna, la estructura general es esta:

MySQL 8.4
SELECT campos_tablas
FROM tabla_1
[INNER] JOIN tabla_2
    ON condicion_combinacion
[...]
  • [ ]parte opcional
  • ...se puede repetir
campos_tablas

Las columnas de cualquiera de las tablas combinadas que aparecerán en el resultado.

tabla_1
La primera tabla, a la que se unen las demás.
INNER

Combinación interna: en el resultado solo aparecen las filas para las que se ha encontrado pareja. Es el tipo de combinación por defecto, así que puedes omitir INNER.

Palabra claveOpcional
tabla_2

La tabla que se une. Para unir más tablas, añade para cada una su propio JOIN ... ON ....

condicion_combinacion

La regla por la que las filas de las dos tablas se encuentran entre sí, por ejemplo Payments.family_member = FamilyMembers.member_id.

Por ejemplo, una consulta puede tener este aspecto:

MySQL 8.4
SELECT family_member, member_name FROM Payments
INNER JOIN FamilyMembers
    ON Payments.family_member = FamilyMembers.member_id
family_membermember_name
1Headley Quincey
2Flavia Quincey
3Andie Quincey
4Lela Quincey
4Lela Quincey
5Annie Quincey
2Flavia Quincey
2Flavia Quincey
5Annie Quincey
3Andie Quincey
2Flavia Quincey
1Headley Quincey
3Andie Quincey
3Andie Quincey

Qué es una combinación interna

Una combinación interna busca los pares de registros de dos tablas que cumplen la condición de combinación y, con ellos, forma una nueva tabla que contiene las columnas de la primera y de la segunda tabla de origen.

Visualmente, se ve así:

Esquema de la combinación interna

Como nuestra condición exige que las columnas Payments.good_id y Goods.good_id sean iguales, en el resultado de la combinación interna solo aparecerán los registros en los que ambas tablas tienen el mismo valor de good_id.

Usar WHERE para combinar tablas

Para hacer una combinación interna también puedes usar la cláusula WHERE. Por ejemplo, la consulta anterior, que escribimos con INNER JOIN, quedaría así:

MySQL 8.4
SELECT family_member, member_name FROM Payments, FamilyMembers
    WHERE Payments.family_member = FamilyMembers.member_id
family_membermember_name
1Headley Quincey
2Flavia Quincey
3Andie Quincey
4Lela Quincey
4Lela Quincey
5Annie Quincey
2Flavia Quincey
2Flavia Quincey
5Annie Quincey
3Andie Quincey
2Flavia Quincey
1Headley Quincey
3Andie Quincey
3Andie Quincey