Tengo la tabla clientes, que entre muchos campos tiene
Id_sucursal, clave_cliente, razon_social
Cuando quiero información de una sucursal, debo traer los datos de esta forma
select * from clientes where id_sucursal='La sucursal que se ocupará'
Ahora bien, tengo una tabla donde se almacenan las ventas, con un montón de campos
Id_sucursal, Id_Consecutivo_Enca, cantidad_productos
Ahora bien, cuando quiero saber cuántas compras ha realizado cada cliente, hago un join
select c.Id_sucursal, c.Razon_Social, ev.Cantidad_Prods from Clientes c inner join Enca_Ventas ev on c.Id_Sucursal=ev.Id_Sucursal and c.Clave_Cliente=ev.Id_Clientewhere c.id_sucursal='La sucursal que se ocupará'
Hasta ahí todo bien. Ahora me solicitaron un reporte donde se puedan ver los clientes con la cantidad de productos que han comprado, incluyendo aquellos que no han realizado compras con nosotros. Yo pensé: sencillo, en lugar de usar un inner join
hago un left join
, con eso debería traer todos los registros de la tabla clientes, y pondránull
en los clientes que no han comprado nada. Y zas! resulta que no funcionó :-(Después de leer un poco, me enteré que el where
podría ser el que me está ocasionando el problema. Así que pensé: Ok, movamos las condiciones al on
, a ver qué pasa
select c.Id_sucursal, c.Clave_Cliente, c.Razon_Social, ev.Cantidad_Prods from Clientes c left join Enca_Ventas ev on c.Id_Sucursal=ev.Id_Sucursal and c.Clave_Cliente=ev.Id_Cliente and c.Id_Sucursal='La sucursal que se ocupará'
Pero tampoco funciona :-(Ahora lo que trae son los registros de todas las sucursales con sus respectivas compras, de esta forma
Suc1 1 LIDIA ELENA PACHECO HERNANDEZ NULLSuc2 1 VICTOR HUGO SANDOVAL MORALES NULLSuc3 1 COLEGIO ATENEA ANIMAS S.C. NULLSuc4 1 ELIZABETH JUAREZ SILVESTRE / COPIAS GELY NULLSuc4 10 MARIA MARGARITA FLORES TRONCO / PAPELERIA DRAGON BALL / TRES VALLES NULLSuc3 10 CONTADORES Y ASESORES GUBERNAMENTALES DEL GOLFO S.C NULLSuc2 10 AUTOMOTRIZ TEHUACAN S.A. DE C.V. NULLSuc1 10 MILTON JAVIER GONZALEZ LEON NULL
¿Podrían orientarme qué estoy haciendo mal?La idea es que sólo me trajera los datos de la sucursal que se puso en el ON
¡Gracias por su tiempo!