Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

[SOLUCIONADO] duda con alias y sum

Estas en el tema de duda con alias y sum en el foro de Mysql en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 06/02/2014, 06:26
 
Fecha de Ingreso: abril-2005
Mensajes: 75
Antigüedad: 19 años, 8 meses
Puntos: 2
duda con alias y sum

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 original
  1. SELECT cl.id_cliente, `nombre` , `apellidos` , `fijo` , `movil` , SUM( importe ) AS 'suma_importe',
  2. SUM( importe_pagado ) AS 'suma_pagado', SUM( importe - importe_pagado ) AS pendiente
  3. FROM `clientes` AS cl, consultas AS c
  4. WHERE cl.id_cliente= c.id_cliente
  5. GROUP BY id_cliente

He probado añadiendo al where lo siguiente, pero no hace nada
Código SQL:
Ver original
  1. AND 'pendiente'>1
Gracias
  #2 (permalink)  
Antiguo 06/02/2014, 06:34
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: duda con alias y sum

Cita:
Iniciado por glome Ver Mensaje
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 original
  1. SELECT cl.id_cliente, `nombre` , `apellidos` , `fijo` , `movil` , SUM( importe ) AS 'suma_importe',
  2. SUM( importe_pagado ) AS 'suma_pagado', SUM( importe - importe_pagado ) AS pendiente
  3. FROM `clientes` AS cl, consultas AS c
  4. WHERE cl.id_cliente= c.id_cliente
  5. GROUP BY id_cliente

He probado añadiendo al where lo siguiente, pero no hace nada
Código SQL:
Ver original
  1. AND 'pendiente'>1
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
Código SQL:
Ver original
  1. AND 'pendiente'>1
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 original
  1. SELECT
  2.     cl.id_cliente,
  3.     `nombre` ,
  4.     `apellidos` ,
  5.     `fijo` ,
  6.     `movil` ,
  7.     SUM(importe ) suma_importe,
  8.     SUM(importe_pagado ) suma_pagado,
  9.     SUM(importe - importe_pagado ) pendiente
  10. FROM `clientes` cl INNER JOIN consultas c ON cl.id_cliente= c.id_cliente
  11. GROUP BY id_cliente
  12. HAVING SUM(importe - importe_pagado ) > 1
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 06/02/2014, 06:39
 
Fecha de Ingreso: abril-2005
Mensajes: 75
Antigüedad: 19 años, 8 meses
Puntos: 2
Respuesta: duda con alias y sum

tengo otra preguntilla
¿Como le añado un filtro entre fechas y por un id de cliente concreto?

muchas gracias
  #4 (permalink)  
Antiguo 06/02/2014, 07:42
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: duda con alias y sum

Cita:
Iniciado por glome Ver Mensaje
tengo otra preguntilla
¿Como le añado un filtro entre fechas y por un id de cliente concreto?

muchas gracias


...pues usando el WHERE, utilizando la cláusula BETWEEN con la fecha, por supuesto.

¿Tienes algo de práctica con SQL o lo estás aprendiendo sobre la marcha?

__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 07/02/2014, 03:12
 
Fecha de Ingreso: abril-2005
Mensajes: 75
Antigüedad: 19 años, 8 meses
Puntos: 2
Respuesta: duda con alias y sum

es que no sabia si se podia usar el where con el having, pero lo probe y va perfectamente

Hace mucho tiempo que lo estudié, y la verdad es que suelo hacer consultas muy sencillas. Tengo que hacer un repasillo,

Muchas gracias

Etiquetas: alias, php, registro, select, sum, tabla
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:23.