Mi LEFT JOIN se comporta como INNER JOIN y no sé por qué
MajoByte
Nivel 3 ·
MajoByte
Nivel 3 ·
Gabriela H.
Nivel 3 ·
El WHERE se aplica después del JOIN. Para los clientes sin pedidos, p.fecha es NULL, y NULL >= '2024-01-01' no es verdadero, así que el WHERE los descarta.
Benjamín R.
Nivel 3 ·
Solución: mové la condición al ON. SELECT c.nombre, p.id FROM clientes c LEFT JOIN pedidos p ON p.cliente_id = c.id AND p.fecha >= '2024-01-01';
Gabriel B.
Nivel 3 ·
Regla mental: las condiciones sobre la tabla de la derecha de un LEFT JOIN van en el ON, salvo que quieras filtrar a propósito (por ejemplo WHERE p.id IS NULL para ver los que NO tienen pedidos).
MajoByte
Nivel 3 ·
Funcionó! No tenía idea de que el ON y el WHERE se comportaban distinto en un LEFT JOIN.
antonella F.
Nivel 2 ·
En un INNER JOIN da lo mismo ponerlo en el ON o en el WHERE, por eso nadie se da cuenta hasta que usa LEFT.