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

[SOLUCIONADO] Problema con INNER JOIN y SUM con registros vacios

Estas en el tema de Problema con INNER JOIN y SUM con registros vacios en el foro de Mysql en Foros del Web. A ver como os lo cuento... Tengo dos tablas (Agenda, Pagos). Su estructura es la siguiente: Agenda ID Fecha Importe Pagado Pagos ID ID_Agenda Fecha ...
  #1 (permalink)  
Antiguo 14/01/2019, 15:16
 
Fecha de Ingreso: febrero-2013
Mensajes: 2
Antigüedad: 11 años, 2 meses
Puntos: 0
Problema con INNER JOIN y SUM con registros vacios

A ver como os lo cuento...

Tengo dos tablas (Agenda, Pagos). Su estructura es la siguiente:
Agenda
ID
Fecha
Importe
Pagado

Pagos
ID
ID_Agenda
Fecha
Importe

En la Agenda se anotan citas de una consulta de masajes y el precio que cuesta dicha cita. El pago de dicha cita se anota en Pagos ya que como se puede pagar en varias remesas, estas quedan registradas independientemente. Una vez de que todo el importe de la cita se ha abonado el campo Pagado se pone en verdadero.

Me gustaría hacer una consulta/búsqueda de todas la citas de la agenda cuyo campo Pagado sea falso y que contenga la suma de los importes de la tabla Pagos para mostrar el importe de la cita y lo pagado por esa cita para ver lo que falta de pagar.

El problema es que puede haber citas sin pagar y no existe ningún registro en Pagos. Entonces la consulta no muestra las citas que no tienen ningún pago.

mi consulta es esta:

Código:
SELECT
`Agenda`.`ID`,
`Agenda`.`Importe`,
`Agenda`.`Pagado`,
`Pagos`.`ID_Agenda`,
SUM(`Pagos`.`Importe`) AS `Importe_0`
FROM
`Agenda`
JOIN `Pagos`
ON `Agenda`.`ID` = `Pagos`.`ID_Agenda`
WHERE
`Agenda`.`Pagado`=0
GROUP BY
`Pagos`.`ID_Agenda`
Alguna sugerencia para que muestre las citas cuyo campo Pagado sea falso y la suma de los pagos no cubra el importe de las citas aunque no exista ningún pago? Esto es, que muestre también las citas que no tengan ningún pago

Muchas gracias...
  #2 (permalink)  
Antiguo 15/01/2019, 05:38
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Problema con INNER JOIN y SUM con registros vacios

Código SQL:
Ver original
  1. SELECT
  2.     A.`ID` ID_Agenda,
  3.     A.`Importe`,
  4.     A.`Pagado`,
  5.     SUM(P.`Importe`) `Importe_0`
  6. FROM `Agenda` A
  7.     LEFT JOIN `Pagos` P ON A.`ID` = P.`ID_Agenda`
  8. WHERE
  9.     A.`Pagado`=0 OR P.`ID_Agenda` IS NULL
  10. GROUP BY
  11.     A.`ID`
1) No pongas campos con la misma información, es innecesario.
2) No pongas agrupamientos sobre campos que pueden ser nulos (ID_Agenda, si no hay pagos relacionados con agenda, no aplica)
3) Usa alias para las tablas, será mas simple para escribir.
__________________
¿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 15/01/2019, 05:52
 
Fecha de Ingreso: febrero-2013
Mensajes: 2
Antigüedad: 11 años, 2 meses
Puntos: 0
Respuesta: Problema con INNER JOIN y SUM con registros vacios

Perfecto. Muchas gracias....
Maravilloso

Etiquetas: join, registros, sum, tabla, vacios
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 21:38.