Cita:
Iniciado por glome Buenos dias
Tengo dos tablas y necesito calcular de cada cliente la suma de importes y la suma de lo pagado de las consultas y la deuda restando ambas, pero que solo me muestre aquellos registros cuya deuda sea mayor de 1.
He conseguido todo menos que si es mayor que 1 la muestre. Y ese filtro lo hago por php, pero como hay muchos registros tarda demasiado.
Podríais revisar mi consulta por si hay alguna otra forma de conseguir ese resultado?
Código SQL:
Ver originalSELECT cl.id_cliente, `nombre` , `apellidos` , `fijo` , `movil` , SUM( importe ) AS 'suma_importe',
SUM( importe_pagado ) AS 'suma_pagado', SUM( importe - importe_pagado ) AS pendiente
FROM `clientes` AS cl, consultas AS c
WHERE cl.id_cliente= c.id_cliente
GROUP BY id_cliente
He probado añadiendo al where lo siguiente, pero no hace nada
Gracias
Por empezar: No puedes usar los alias del SELECT en su WHERE. Es una regla universal de todos los DMS y no sólo de MySQL.
Segundo: Esto tiene un error grave
estás comparando la cadena de texto "pendiente" con el número 1...
Tu problema tiene varias soluciones, pero esta posiblemente sea la más simple:
Código SQL:
Ver originalSELECT
cl.id_cliente,
`nombre` ,
`apellidos` ,
`fijo` ,
`movil` ,
SUM(importe ) suma_importe,
SUM(importe_pagado ) suma_pagado,
SUM(importe - importe_pagado ) pendiente
FROM `clientes` cl INNER JOIN consultas c ON cl.id_cliente= c.id_cliente
GROUP BY id_cliente
HAVING SUM(importe - importe_pagado ) > 1