Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > MySQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 10-04-2012
Avatar de Adrian Murua
Adrian Murua Adrian Murua is offline
Miembro
 
Registrado: oct 2003
Ubicación: Tucuman - Argentina
Posts: 45
Poder: 0
Adrian Murua Va por buen camino
Cool Realizar Consulta para sacar el primer elemento distinto de una lista.

Estimados Amigos.

Tengo dos tablas mysql. Afiliados y CuotasPrestamos, entre otras, pertenecientes a un sistema administrativo de una Mutual, la cual se dedica a prestamos personales, cuya devolucion es en cuotas.

En la tabla afiliados obviamente la informacion del afiliados(id, apellido, nombre, dirección ...,etc.), la tabla CuotasPrestamos la informacion de las cuotas del prestamo( id, numero, importe vencimiento,...,etc).

Código SQL [-]
Afiliados                               
--------                                 
id   int;   //clave primaria                                     
apellido varchar(50);                  
nombre varchar(50);                   
.....                                         
                                             
                                          
CuotasPrestamos
-----------------
id int;    //clave primaria
numero int;  // numero de cuota del plan
importe decimal(10,3); 
vencimiento  date; 
pagada int default 0;  // si esta pagada tiene un 1.
planes_id int;   // clave foranea (tabla planes)
afiliados_id int; // clave foranea (tabla afiliados)

Estas tablas estan relacionadas por el campo id - afiliados_id.
La tabla CuotasPrestamos, dependiendo del plan elegido ( 3,6,12, etc), va a tener, segun el caso, 3-6-12 filas(cuotas), por cada cliente que saco un prestamo.

En un tiempo determinado, puedo tener en las tablas lo siguiente:

Afiliados
--------
1 ; Perez ; Juan ; ....; // separe los campos con ;
2 ; AAAA ; BBBBB; .. ;


CuotasPrestamos
----------------

1 ; 1; 18.33; '2012-01-10'; 1; 6; 1; //plan 6 cuotas afiliados 1.
2 ; 2; 18.33; '2012-02-10'; 1; 6; 1;
3 ; 3; 18.33; '2012-03-10'; 0; 6; 1;
4 ; 4; 18.33; '2012-04-10'; 0; 6; 1;
5 ; 5; 18.33; '2012-05-10'; 0; 6; 1;
6 ; 6; 18.33; '2012-06-10'; 0; 6; 1;

7 ; 1; 18.33; '2012-01-10'; 0; 3; 2; //plan 3 cuotas afiliados 2.
8 ; 2; 18.33; '2012-02-10'; 0; 3; 2;
9 ; 3; 18.33; '2012-03-10'; 0; 3; 2;


Cual es mi problema :

1. Debo sacar informacion de la primera cuota impaga del afiliado, ( la cuota impaga es la que tiene un cero en el campo pagada), pero que no me muestre las adeudadas que no estan vencidas todavia, la consulta debe devolver un solo registro. Este registro debe ser actualizado con los datos de un pago realizado por el cliente, por esto debe ser unico el registro devuelto.

2. (Esta es una consulta de logica). Como se trata la situacion de que el afiliados tiene 2 o mas cuotas atrazadas, tanto para actualizar los pagos, como para el tratamiento ya como deudor moroso.


desde ya muchas gracias.
__________________
Adrián Murúa.
Responder Con Cita
  #2  
Antiguo 10-04-2012
Avatar de rgstuamigo
rgstuamigo rgstuamigo is offline
Miembro
 
Registrado: jul 2008
Ubicación: Santa Cruz de la Sierra-Bolivia
Posts: 1.646
Poder: 17
rgstuamigo Va por buen camino
Cita:
Empezado por Adrian Murua Ver Mensaje

1. Debo sacar informacion de la primera cuota impaga del afiliado, ( la cuota impaga es la que tiene un cero en el campo pagada), pero que no me muestre las adeudadas que no estan vencidas todavia, la consulta debe devolver un solo registro. Este registro debe ser actualizado con los datos de un pago realizado por el cliente, por esto debe ser unico el registro devuelto.
Código SQL [-]
select * from CuotasPrestamos where afiliados_id=@IDAfiliado and pagada=0 and vencimiento < CURDATE() Order By vencimiento Limit 1;
@IDAfiliado= el ID del afiliado a buscar.
Cita:
Empezado por Adrian Murua Ver Mensaje
2. (Esta es una consulta de logica). Como se trata la situacion de que el afiliados tiene 2 o mas cuotas atrazadas, tanto para actualizar los pagos, como para el tratamiento ya como deudor moroso.
...
No sé si es lo que buscas pero para saber los clientes con 2 o mas cuotas atrazadas se pude hacer lo siguiente consulta SQL:
Código SQL [-]
Select ConcatWS(' ',a.Nombre,a.Apellido) as Cliente ,count(c.pagada) as Cuotas_Retrasadas
From Afiliados a Inner Join CuotasPrestamos c On a.Id=c.afiliados_id
Where c.Pagada=0 and c.vencimiento < CURDATE()
Group By Cliente Having count(c.pagada)>=2
Pruebalo..ya que lo he hecho a mano sin probarlo...
Saludos...
__________________
"Pedid, y se os dará; buscad, y hallaréis; llamad, y se os abrirá." Mt.7:7

Última edición por rgstuamigo fecha: 10-04-2012 a las 16:03:39.
Responder Con Cita
  #3  
Antiguo 11-04-2012
Avatar de Adrian Murua
Adrian Murua Adrian Murua is offline
Miembro
 
Registrado: oct 2003
Ubicación: Tucuman - Argentina
Posts: 45
Poder: 0
Adrian Murua Va por buen camino
Cool

Gracias, rgstuamigo, por tu respuesta , era exactamente lo que estaba buscando, las dos consultas funcionan bien , ahora una pregunta , la segunda consulta, con algunos retoques, mas el "count", no seria una generalizacion de la primera consulta. Gracias.
__________________
Adrián Murúa.
Responder Con Cita
  #4  
Antiguo 11-04-2012
Avatar de rgstuamigo
rgstuamigo rgstuamigo is offline
Miembro
 
Registrado: jul 2008
Ubicación: Santa Cruz de la Sierra-Bolivia
Posts: 1.646
Poder: 17
rgstuamigo Va por buen camino
Arrow

Cita:
Empezado por Adrian Murua Ver Mensaje
... ahora una pregunta , la segunda consulta, con algunos retoques, mas el "count", no seria una generalizacion de la primera consulta.
Pues si tú lo ves de esa forma..pues si...pero ten en cuenta que la segunda puede devolverte como resultado muchas tuplas(filas), en cambio la primera solo te devolverá una o niguna segun sea el caso, ya que esta delimitada por la clausula LIMIT, ademas existe cierto criterio de seleccion(WHERE ,GROUP BY, HAVING) que diferencia la una de la otra.
Salludos...
__________________
"Pedid, y se os dará; buscad, y hallaréis; llamad, y se os abrirá." Mt.7:7
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Ayuda en consulta para sacar kardex Rom@n SQL 3 17-01-2009 19:26:01
Realizar una consulta sobre los registros que devuelve otra consulta Borjaserrano Firebird e Interbase 12 01-10-2007 23:19:44
Sacar el primer resultado de una consulta con varios VRO Firebird e Interbase 5 04-05-2007 16:23:14
Uso y abuso del elemento "lista de opciones" papulo HTML, Javascript y otros 9 12-01-2006 17:34:24
Como mostrar el primer elemento de un DBLookupComboBox?? Carmen OOP 3 04-11-2004 20:37:16


La franja horaria es GMT +2. Ahora son las 00:46:17.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi