Consulta 2 tablas con totales

Tengo 2 tablas
---------
Clientes
---------
id_cliente
Nombre
Domicilio
tipo_cliente
---------
Compras
---------
id_compra
id_cliente
fecha_compra
con la consulta
SELECT
   id_cliente, count(id_cliente) AS compras_totales
FROM
    compras
GROUP BY
    id_cliente
order by  compras_totales, id_cliente
y me da un listado asi:
id_cliente     compras totales
----------- ---------------
1 22
2 55
4 3
Necesito hacer lo siguiente:
1. Que en el listado me ponga en nombre y domicilio del cliente
2. Que me permita especificar las compras totales solo de los clientes tipo = 'bronce'

2 respuestas

Respuesta
1
(xxxxxx)", lo que pedís es fácil, solo tenés que hacer un subquery.
SELECT id_cliente, nombre, domicilio, (SELECT count(id_compra) FROM compras_totales WHERE compras_totales.id_cliente = clientes.id_cliente ) as compras_totales FROM clientes WHERE tipo_cliente = 'bronce'
La parte en negrita te permite hacer el filtrado que pedías.
No lo he probado, y dado que tampoco me decís con qué proveedor de bases de datos trabajás, podría ser que no funcione. En ese caso, respóndeme diciendo el proveedor y ya te doy el query probado y funcionando ;)
Respuesta
1
Primera pregunta,
Tienes que unir las dos tablas y agrupar por cliente y domicilio
SELECT clientes.id_cliente, clientes.domicilio
, Sum(compras.id_compra) AS compras_totales
FROM clientes , compras
WHERE clientes.id_cliente=compras.id_cliente
GROUP BY clientes.id_cliente, clientes.domicilio;
Segunda pregunta
Para la segunda pregunta solo tienes que añadir en el where la condición tipo = 'bronce'
SELECT clientes.id_cliente, clientes.domicilio
, Sum(compras.id_compra) AS compras_totales
FROM clientes , compras
WHERE clientes.id_cliente=compras.id_cliente
and tipo_cliente = 'bronce'
GROUP BY clientes.id_cliente, clientes.domicilio;
Perfecto solo hice un cambio de sum por count para saber las compras totales no en dinero sino en numero de operaciones, un saludo y gracias por tu apoyo

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas