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

Sentencia MySQL no me trae lo que necesito

Estas en el tema de Sentencia MySQL no me trae lo que necesito en el foro de Mysql en Foros del Web. Buenas, haber si alguien me puede ayudar, tengo el siguiente inconveniente: Necesito sacar un reporte de de clientes que llevan mas de un mes de ...
  #1 (permalink)  
Antiguo 26/02/2013, 13:52
Avatar de xtimed  
Fecha de Ingreso: julio-2009
Ubicación: BCN - México
Mensajes: 226
Antigüedad: 14 años, 9 meses
Puntos: 41
Pregunta Sentencia MySQL no me trae lo que necesito

Buenas, haber si alguien me puede ayudar, tengo el siguiente inconveniente:
Necesito sacar un reporte de de clientes que llevan mas de un mes de atrasados en los pagos que realizan, la sentencia es la siguiente:

Código SQL:
Ver original
  1. SELECT p.operacion AS Pedido, cli.nombre AS Cliente, MAX(STR_TO_DATE(p.fecha, '%d/%m/%Y')) AS Fecha, c.saldo AS Saldo FROM tblPagos AS p, tblCreditos AS c, tblClientes AS cli WHERE STR_TO_DATE(p.fecha, '%d/%m/%Y') < DATE_ADD(CURDATE(), INTERVAL 1 MONTH) AND c.saldo > 0 AND p.operacion = c.operacion AND cli.id = p.cliente GROUP BY p.operacion

En la tabla tblPagos es donde se registra el pago que realizan todos los clientes, en la tabla tblCreditos se registran los clientes que compran a crédito, si en esta tabla el saldo es 0 no se toma en cuenta, y de la tabla pagos ocupo sacar el ultimo pago de cada cliente y verificar si tiene mas de un mes de atraso, lo mas probable es que tenga mal echa la sentencia, si alguien me puede echar una mano le agradecería mucho.
__________________
Genio es todo aquel que conoce sus cualidades
  #2 (permalink)  
Antiguo 26/02/2013, 14:06
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 meses
Puntos: 447
Respuesta: Sentencia MySQL no me trae lo que necesito

Hola xtimed:

Vayamos por partes,

1. ¿Estás guardando las fechas en un campo tipo VARCHAR? esto es un error de kinder, y si estuvieras estudiando seguramente serías reprobado por tu maestro, y si eres DBA y propones algo como esto, seguramente te arriesgarías a ser despedido... Las fechas se deben guardar en campos tipo DATE o DATETIME, cualquier otra cosa sólo te traerá dolores de cabeza.

2. Evita hacer las uniones entre las tablas en el FROM-WHERE, en lugar de eso utilizas JOIN's (LEFT, RIGTH o INNER según sea el caso)

Código:
es decir, en lugar de hacer esto:
...
FROM tabla1, tabla2 WHERE tabla1.campo = tabla2.campo

has esto
...
FROM tabla1 INNER JOIN tabla2 ON tabla1.campo = tabla2.campo
3. Tercero la palabra AS para la definición de ALIAS, es completamente obsoleta, ya no existe en el standar de SQL...

4. Tendrías que decirnos algunas consideraciones... por ejemplo, un cliente DEBE TENER UN PAGO... esto generalmente no ocurre, pues pueden existir clientes que tengan más de un mes de haber recibido un crédito y sin embargo nunca haber realizado un pago.

5. La parte de obtener el último registro para un cliente es un tema que hemos tratado infinidad de veces en este foro... podrías hacer una búsqueda para ver si hay algún ejemplo que se adecue a lo que necesitas hacer, o preguntarle a SAN GOOGLE, el generalmente tiene una respuesta para todo.

Saludos
Leo.
  #3 (permalink)  
Antiguo 26/02/2013, 14:15
Avatar de xtimed  
Fecha de Ingreso: julio-2009
Ubicación: BCN - México
Mensajes: 226
Antigüedad: 14 años, 9 meses
Puntos: 41
Respuesta: Sentencia MySQL no me trae lo que necesito

Gracias por la respuesta, sabia que me cuestionarian por lo del campo fecha en varchar, se me pasó comentar al respecto de eso, la BD es vieja, yo no lo realizé, por falta de tiempo no he echo modificaciones para ponerla como debe de ser, consideraré hacer lo que me dices del punto 2, el 3 tienes razón, el 4, es tal cual como dices, un cliente puede tener un crédito pero nunca haber realizado un pago, sin embargo, si no ha realizado un pago, en la subconsulta no me trae el numero de cliente y no se realiza la consulta en la tabla de creditos, no se si me explique, y el punto 5 ya lo he realizado, pero no he encontrado un problema parecido al mio, si lo hubiese encontrado creeme que no hubiese posteado este tema, mas aparte no tengo muchos conocimientos que digamos en base de datos, pero conosco algo al respecto, agradece tu comentario y seguiré investigando.
__________________
Genio es todo aquel que conoce sus cualidades

Etiquetas: sentencia
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 05:50.