joins

INNER JOIN a SQL: vincular clientes y pedidos

Conecte dos tablas sin duplicar datos con una condición join clara y verificable.

Equipo de SQL.tn9 min
Ilustración de tablas de clientes y pedidos vinculados para formar un resultado común

¿Por qué están separados los datos?

Una base de datos relacional evita copiar la misma información en cada línea. La tabla clients almacena el nombre y la ciudad de cada cliente, mientras que la tabla commandes almacena las compras.

Para mostrar el nombre del cliente junto a un pedido, SQL debe combinar estas dos fuentes al leer. Esta es la función de un join.

Todas las personas, pedidos y valores utilizados en este artículo son ficticios y tienen únicamente fines de aprendizaje.

La clave común hace posible la relación

En clients, id_client identifica de forma única a una persona: esta es la clave principal. En commandes, el mismo valor indica quién realizó el pedido: actúa como clave externa.

La relación por tanto no depende del nombre del cliente. Dos personas pueden tener el mismo nombre, mientras que su identificador sigue siendo único.

Estructura simplificada de las dos tablas.
clients
- id_client  INTEGER  PRIMARY KEY
- nom        VARCHAR
- ville      VARCHAR

commandes
- id_commande  INTEGER  PRIMARY KEY
- id_client    INTEGER
- montant      DECIMAL

Escribe un INNER JOIN paso a paso

La consulta comienza en clients, agrega commandes y luego describe la coincidencia en la cláusula ON. INNER JOIN solo mantiene las filas para las que existe esta coincidencia.

Los alias c y co acortan las referencias. También evitan cualquier ambigüedad cuando ambas tablas tienen una columna con el mismo nombre.

  • FROM clients AS c establece la primera fuente.
  • INNER JOIN commandes AS co agrega la segunda tabla.
  • ON c.id_client = co.id_client especifica qué líneas coinciden.
  • SELECT elige solo las columnas útiles para el resultado.
Vincula cada pedido a su cliente
SELECT
  c.nom,
  co.id_commande,
  co.montant
FROM clients AS c
INNER JOIN commandes AS co
  ON c.id_client = co.id_client
ORDER BY co.montant DESC;

Lee y comprueba el resultado.

Un pedido asociado con un cliente produce una línea en el resultado. Si un cliente tiene tres pedidos, su nombre aparece tres veces: no se trata de duplicados accidentales, sino de tres hechos diferentes.

Antes de agregar cálculos, comprueba algunos identificadores manualmente. Un join correcto debe preservar el significado comercial de las líneas y no multiplicar su número sin motivo.

Reflex Data Analyst: compara el número de registros devueltos antes y después de join. Un aumento inesperado puede revelar una relación de muchos a muchos o una clave no única.

¿INNER JOIN o LEFT JOIN?

INNER JOIN responde a la pregunta "¿Qué pedidos tienen un cliente correspondiente?" ". Un cliente sin pedido desaparece del resultado.

LEFT JOIN por el contrario mantiene a todos los clientes de la mesa de la izquierda. Las columnas de pedido son NULL cuando ningún pedido coincide. Esta opción es útil para encontrar clientes inactivos.

También mantener a los clientes sin pedidos.
SELECT c.nom, co.id_commande
FROM clients AS c
LEFT JOIN commandes AS co
  ON c.id_client = co.id_client;

Cinco errores comunes con joins

Una consulta puede ejecutarse sin errores técnicos pero aun así producir un resultado comercial incorrecto. Por lo tanto, el estado ON merece una relectura atenta.

  • Olvídese de la cláusula ON y crea todas las combinaciones posibles.
  • Vincula el nombre del cliente en lugar de su ID estable.
  • Confundir id_client y id_commande.
  • Utiliza INNER JOIN mientras se deben conservar las filas no coincidentes.
  • Seleccionando todas las columnas con * y dificultando la verificación del resultado.

El método para recordar

Primero identifica la pregunta de negocios, luego la tabla que representa cada objeto. Luego localiza la clave principal y la clave externa, escribe la condición ON y comprueba algunas líneas.

Cuando este resultado sea confiable, puede agregar un filtro, clasificación o agregación. El ejercicio de pedidos de clientes le permite aplicar este método de inmediato.

Pon esta guía en práctica.

Abre el ejercicio relacionado, ejecuta tu consulta y compara el resultado esperado.

Empezar el ejercicio