Mi consulta es muy básica pero estoy encontrando inconsistencias al momento de hacerla.
Supongamos que tengo 2 tablas:
Clientes: id, nombre
Compras: id, id_cliente, nombre_cliente, fecha
Como es obvio, el identificador id_cliente de la tabla Compras hace referencia al id de la tabla Clientes.
El objetivo:
Obtener todos los clientes con compras realizadas despues de la fecha '31-12-2011'.
Por lo que mi consulta queda de la siguiente forma:
Código SQL:
Ver original
SELECT Compras.id_cliente AS CODIGO, Clientes.nombre AS NOMBRE, COUNT(Compras.id) AS CantReg FROM Compras JOIN Clientes ON Clientes.id = Compras.id_cliente WHERE Compras.Fecha > '31-12-2011' GROUP BY Compras.id_cliente, Clientes.NOMBRE ORDER BY CantReg DESC
El problemas es que al realizar la comparación con una simple consulta dentro de Compras, la cantidad de resultados difieren:
Código SQL:
Ver original
SELECT id_cliente, nombre_cliente, COUNT(ID) AS CantReg FROM Compras WHERE Fecha>'31-12-2011' GROUP BY id_cliente, nombre_cliente ORDER BY CantReg DESC
Quisiera destacar el hecho de que no se si el ingreso de nombre_cliente puede hacerse independientemente del id_cliente al generar el registro (es un sistema viejo y debo migrar la base de datos)
Me interesa saber, en un principio, si la clausula JOIN está bien implementada y cumple con mi objetivo.
Además me gustaría escuchar opiniones de por qué la cantidad de registros devueltos en ambas consultas difieren. Hasta donde ví, para cada id_cliente de la tabla Compras existe un cliente en la tabla Clientes.
Gracias de antemano