Ver Mensaje Individual
  #1 (permalink)  
Antiguo 15/03/2016, 16:04
Ktulu
Invitado
 
Mensajes: n/a
Puntos:
Pregunta Consulta JOIN SQL

Hola,

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
  1. SELECT Compras.id_cliente AS CODIGO, Clientes.nombre AS NOMBRE, COUNT(Compras.id) AS CantReg
  2. FROM Compras
  3. JOIN Clientes ON Clientes.id = Compras.id_cliente
  4. WHERE Compras.Fecha > '31-12-2011'
  5. GROUP BY Compras.id_cliente, Clientes.NOMBRE
  6. 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
  1. SELECT id_cliente, nombre_cliente, COUNT(ID) AS CantReg
  2. FROM Compras
  3. WHERE Fecha>'31-12-2011'
  4. 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