joins

INNER JOIN o LEFT JOIN: ¿cuál elegir?

La elección depende primero de qué líneas deben permanecer visibles, no de una preferencia de sintaxis.

Equipo de SQL.tn8 min
Dos joins comparan coincidencias y líneas izquierdas sin equivalente

¿Qué población deberías mantener?

INNER JOIN devuelve solo filas que coinciden. LEFT JOIN mantiene todas las filas de la tabla de la izquierda y completa las columnas que faltan con NULL.

Para encontrar clientes sin pedido, hay que dejar clientes. Para analizar solo los pedidos vinculados a un cliente válido, INNER JOIN expresa mejor la necesidad.

Los nombres, cantidades y datos utilizados en este artículo son ficticios y creados con fines de aprendizaje.

La consulta explicada

Empieza por definir qué debe representar una fila del resultado. Esta decisión determina las columnas, agrupaciones y controles necesarios.

El siguiente ejemplo aísla el mecanismo principal. Ejecútelo, observe el resultado y luego cambie una cláusula a la vez para comprender su efecto.

Cuenta los pedidos sin perder clientes inactivos
SELECT c.nom, COUNT(co.id_commande) AS commandes
FROM clients c
LEFT JOIN commandes co ON co.id_client = c.id_client
GROUP BY c.id_client, c.nom;

Lea el resultado como un analista.

COUNT es para el ID de comando que admite valores NULL, no para *. Por lo tanto, un cliente no igualado obtiene cero.

Un filtro de pedidos realizados en WHERE podría eliminar las líneas NULL y cancelar el efecto de LEFT JOIN; colóquelo en ON si la población izquierda debe permanecer completa.

  • Nombra la población de referencia.
  • Planifique líneas inigualables.
  • Cuenta una columna en el lado derecho.
  • Verificar los filtros colocados en ON o WHERE.

Errores que distorsionan el análisis

Una consulta puede ser válida sin responder correctamente a la pregunta. Los errores más costosos suelen ser silenciosos: perímetro incorrecto, línea multiplicada o valor faltante interpretado como cero.

Antes de compartir el resultado, compárelo con una pequeña muestra calculada manualmente y mantén la definición del alcance con la consulta.

  • Elija INNER JOIN por costumbre.
  • Coloque un filtro derecho en WHERE después de LEFT JOIN.
  • Cuenta * y muestra 1 para una ausencia.
  • Agrupa solo por nombre y fusiona homónimos.

Ponte en practica

Haga el ejercicio de los clientes sin un pedido y luego vuelva a escribirlo con NOT EXISTS.

El simulador SQL de SQL.tn solo ejecuta consultas de lectura sobre datos ficticios en su navegador. Puede probar varias escrituras y comparar sus resultados sin instalar ningún software.

Pon esta guía en práctica.

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

Empezar el ejercicio