Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   MySQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=21)
-   -   seleccionar el primero de cada grupo (https://www.clubdelphi.com/foros/showthread.php?t=66976)

smessina 23-03-2010 02:00:29

seleccionar el primero de cada grupo
 
Antes que nada Gracias a todos los que se tomaran en trabajo de leer este post.

trabajo con delphi 7 + zeos + mysql 5.0

tengo una tabla llamada cuotas :
Código:

ID    codcredito cuotaNro    importe  pagada
1    1                1 de 3        100      true
2    1                2 de 3        100      true
3    1                3 de 3        100      false
4    2                1 de 3        150      true
5    2                2 de 3        150      false
6    2                3 de 3        150      false

y necesito tomar la primera cuota impaga de cada codcredito

es decir necesito crear una vista que me traiga :

Código:

id codcredito  cuotanro  importe
3  1                3 de 3    100     
5  2                2 de 3    150

que seria algo como :

Código SQL [-]
select id, codcredito, cuotanro, importe from cuotas where pagada=false group by codcredito, cuotanro, importe

pero el problema que tengo es que por alguna extraña razon el Mysql no me las ordena por el id por lo que a veces cuando hago los appends desde el tztable cuando llamo una consulta "select * from cuotas" los id me aparecen desordenados por lo que a veces la consulta anterior me devuelve:
Código:

id codcredito  cuotanro  importe
3  1                3 de 3    100     
6  2                3 de 3    150

Si algo no se entiende por favor me avisan y tratare de ser mas Claro.

desde ya muchas Gracias

cemese 23-03-2010 12:47:21

Buenas:

Has probado a añadir la cláusula ORDER BY a la sentencia SQL.

Un saludo

smessina 23-03-2010 14:52:35

Gracias
 
si probe pero al ordenamiento lo hace despues de armar la consulta
por lo que me ordena ya el resultdado de la consulta y no antes de hacer la consulta.

Caro 23-03-2010 15:49:58

Hola smessina

Cita:

Empezado por smessina (Mensaje 357856)
........tengo una tabla llamada cuotas :
Código:

ID    codcredito cuotaNro    importe  pagada
1    1                1 de 3        100      true
2    1                2 de 3        100      true
3    1                3 de 3        100      false
4    2                1 de 3        150      true
5    2                2 de 3        150      false
6    2                3 de 3        150      false

y necesito tomar la primera cuota impaga de cada codcredito

es decir necesito crear una vista que me traiga :

Código:

id codcredito  cuotanro  importe
3  1                3 de 3    100     
5  2                2 de 3    150

que seria algo como :


Código SQL [-]select id, codcredito, cuotanro, importe from cuotas where pagada=false group by codcredito, cuotanro, importe

Cuando se hace el group by por varios campos que no hagan referencia a un grupo, en tu caso por ejmplo id, te devuelve como resultado casi los mismos registros, por lo que la consulta que pones devolvería todos los registros donde pagada sea igual a false.

La consulta que yo haría para obtener los primeros registros de un grupo y que codcredito sea el menor, sería esta:

Código SQL [-]
Select *
From cuotas c1 Inner Join (Select Min(id) as id, codcredito From cuotas 
                                    Where pagada=false Group By codcredito) as c2
        on (c1.id=c2.id)

Saluditos

smessina 25-03-2010 15:25:03

Gracias
 
Gracias con eso lo solucione..


La franja horaria es GMT +2. Ahora son las 16:01:08.

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