PDA

Ver la Versión Completa : quiero Agrupar según condición FastReport


vicentnew
12-07-2012, 21:51:12
Estimados, tengo dos tablas relacionadas, en una los nombres de los alumnos (tabla1) y en la otra las materias que adeudan (tabla2), a su ves en fast report me arme un formulario que me muestre todos los alumnos y la cantidad de materia que adeuda cada uno…. El problema es que no se como mostrar solo aquellos alumnos que adeuden mas de dos materias por ejemplo, y no se si ese problema lo tengo resolver dentro del fastreport o en el sql del query que tengo en mi form…les paso el ejemplo, trabajo con delphi7 y sqlite3 con zconection. Desde ya gracias

Tabla 1
Id Id_alumno

1 1
2 2
3 3
4 4


Tabla2
Id Id_alumno Materia

1 2 Matemática
2 2 Lengua
3 1 Recreo

kapcomx
12-07-2012, 22:34:37
amigo vicentnew, lo que te recomiendo es que hagas desde tu query el filtro para que te devuelva los que deben mas de 2 materias y luego ese query lo ligues al reporte

ya en le reporte hasta podrias hacer un maestro detalle alumno-materias
saludos...:cool:

vicentnew
13-07-2012, 03:05:41
Hola amigo gracias, tengo pensado algo así, (Digamos que es lo que necesito):

Select * From "tabla2" GROUP BY "id_alumno" where "materia" HAVING Count(*)>2

pero es mas que evidente que estoy colocando mal el código sql, me darían una mano?

ozsWizzard
13-07-2012, 08:24:01
Creo que lo que quieres hacer es algo así como esto:


Select "id_alumno", Count(*) as Materias
From "tabla2"
Group By "id_alumno"
Having Count(*) > 2


Piense que cuando se usa una cláusula "Group by", en la cláusula "Select" siempre tienen que estar los campos por los que agrupas (y viceversa).

EL "Having" es como una cláusula "Where" pero con funciones de grupo (como es el Count).

Un saludo

vicentnew
13-07-2012, 15:10:16
Gracias amigos me estoy acercando creo a lo que quiero, solo que aun no puedo resolver el problema, ya que en mi reporte necesito ver de esta manera:

id_Alumno: 758
Materias que adeuda:
Nombre de materia 1
Nombre de materia 2
Nombre de materia 3

y asi.........

pero haciendo de la forma anterior solo veo de esta manera


id_Alumno: 758
Materias que adeuda:
3

Por el momento pude lograr ver todos los alumnos con las materias adeudadas, lo que no puedo hacer es filtrar solo aquellos que adeudan mas de dos materias con la lista correspondiente de materias...

vicentnew
18-07-2012, 01:41:07
Amigos, Gracias por la ayuda, al final pude solucionar el problema, siempre estuvo en mis narices, solo tenia que agregar un detaildata dentro del fastreport y apuntar allí las materias relacionadas al alumno y listo. muchas gracias:p