Ver Mensaje Individual
  #4 (permalink)  
Antiguo 20/11/2014, 05:09
guilens2
 
Fecha de Ingreso: noviembre-2014
Mensajes: 4
Antigüedad: 10 años
Puntos: 0
Respuesta: Restar dos Count MySQL

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 original
  1. SELECT C.cliente_id, C.cliente_compania, F.total_facturas - A.total_abonos
  2.  FROM clientes C
  3.  LEFT JOIN ( SELECT ventas_id_cliente, COUNT(*) total_facturas
  4.              FROM facturas
  5.  INNER JOIN ventas ON ventas_id=factura_ventas_id
  6.              GROUP BY ventas_id_cliente) F ON C.cliente_id = F.ventas_id_cliente
  7.  LEFT JOIN (SELECT abonos_id_cliente, COUNT(*) total_abonos
  8.              FROM abonos
  9.              GROUP BY abonos_id_cliente) A ON C.cliente_id = A.abonos_id_cliente
  10. -- -------------------
  11. WHERE total_abonos IS NOT NULL AND total_facturas IS NOT NULL ORDER BY cliente_compania
  12. -- -------------------
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!

Última edición por gnzsoloyo; 20/11/2014 a las 06:34 Razón: Legibilidad de codigo SQL