Hola de nuevo!
Funciona perfectamente!
He adaptado la consulta a mis necesidades, ya que necesito sacar el resultado de restar Número de Facturas - Número de Abonos realizados para cada cliente.
La relación de las tablas es de la siguiente manera: Tabla Ventas: ventas_id, ventas_id_cliente
Tabla Clientes: cliente_id, cliente_compania
Tabla Facturas: facturas_id, facturas_ventas_id
Tabla Abonos: abonos_id, abonos_cliente_id
La tabla Facturas para llegar al cliente, necesita a la tabla ventas*.
Por lo tanto he hecho una adaptación de lo que tu me has dado, para
quitar los NULL, hacer la
resta de los totales y ordenarlos por nombre de compañia y queda así:
Código SQL:
Ver originalSELECT C.cliente_id, C.cliente_compania, F.total_facturas - A.total_abonos
FROM clientes C
LEFT JOIN ( SELECT ventas_id_cliente, COUNT(*) total_facturas
FROM facturas
INNER JOIN ventas ON ventas_id=factura_ventas_id
GROUP BY ventas_id_cliente) F ON C.cliente_id = F.ventas_id_cliente
LEFT JOIN (SELECT abonos_id_cliente, COUNT(*) total_abonos
FROM abonos
GROUP BY abonos_id_cliente) A ON C.cliente_id = A.abonos_id_cliente
-- -------------------
WHERE total_abonos IS NOT NULL AND total_facturas IS NOT NULL ORDER BY cliente_compania
-- -------------------
Resultado:
[B]cliente_id | cliente_compania | Total
38 COMPAÑIA UNO 10
48 COMPAÑIA DOS 6
53 COMPAÑIA TRES 4
54 COMPAÑIA CUATRO 2
56 COMPAÑIA CINCO 21
......
Un saludo y gracias de nuevo!