Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   como mostrar consultas multiples en un dbgrid?? (https://www.clubdelphi.com/foros/showthread.php?t=39307)

yo_coco_py 16-01-2007 19:01:35

como mostrar consultas multiples en un dbgrid??
 
Usando delphi 7 e interbase como base de datos... y un ibquery para conexion.
El problema que tengo es que quiero mostrar datos de diferentes consultas en un grilla y no se como hacerlo..
Tengo en mi BD una tabla alumnos y otra de cuotas y lo que quiero es:
nombre cuota1 cuota2 cuota3 cuotan
juan x x x
pedro x x
luis x x x x

Primera fila bien: select nombre from alumnos
para consulta de un alumno especifico bien: select cuotas_pagadas from cuotas alumnos where id_alumno = 1(juan) and alumno.id_alumno = cuotas.id_alumno
El problema es como hago para mostrar de todos juntos en la grilla..???

kuan-yiu 16-01-2007 20:17:47

Explica un poco más la estructura y relaciones de las tablas implicadas para que podamos decirte algo.

Y de paso pon el código entre sus correspondientes etiquetas que sino es un incordio leerlo.

Lepe 17-01-2007 12:12:08

Realiza un inner join de ambas por el campo que tengan en común, yo supongo que es idalumno:

Código SQL [-]
select A.nombreAlumno, C.cuota1, C.Cuota2 from
Alumnos A inner join cuotas C on
A.idalumno = C.idalumno

Como ves he usado abreviaturas (alias) para las tablas, de forma que Alumnos la renombro a "A" y Cuotas a "C"

saludos

yo_coco_py 17-01-2007 18:29:12

Mejor exlicado...
 
Bueno.. en realidad lo que quiero mostrar en la grilla son los datos de dos tablas,
en una columna, los datos de un curso especifico, o sea, los nombres de los alumnos,
y seguido el detalle de cuotas pagadas(que se encuentra en el detalle de la tabla de estado de cuentas)...
Mostrar los alumnos no es problema..
y tampoco el estado de cuenta de un solo alumno,
pero cuando quiero mostrar de todos juntos en la grilla es el problema..
Este es el codigo para mostrar los alumnos:
Código SQL [-]
select distinct ID_ALUMNO, apellido  || nombre
from alumnos_inscriptos, alumnos, curso, estado_cuenta
where alumnos.id_alumno = alumnos_inscriptos.id_alumno
and curso.id_curso = alumnos_inscriptos.id_curso
and estado_cuenta.id_alumno = alumnos_inscriptos.id_alumno
and curso.id_curso = 0
order by alumnos.apellido
____________________________________
Con esta consulta muestro los datos de una persona:
Código SQL [-]
select * from  estado_cuenta, detalle_cuenta
where estado_cuenta.id_estado = detalle_cuenta.id_estado
and estado_cuenta.id_estado = 1
___________________________________
el numero 1 es solo a modo de ejemplo..
Ojala se entienda mejor lo que quiero hacer y perdon por las etiquetas (ojala salgan), pero es la primera vez en el foro..
PD: las relaciones se pueden observar en el codigo...;)

Crandel 17-01-2007 23:30:20

Como dijo kuan-yiu, la estructura de las tablas es lo que se necesita.

FOURIER 27-01-2007 12:59:00

Espero te sirva
 
Te voy a poner un ejemplo a ver si me explico

Aqui se usa lainstrucción CASE , aplicando un CASE a cada valor de pivote y agrupando su resultado por medio de una función de agregado como SUM. El valor a agregar puede ser de dos tipos: un valor fijo, u otra columna dentro de la tabla. El resultado de aplicar este método al problema anterior es el siguiente:

Código SQL [-]
SELECT f_vendedor,
            SUM(CASE MONTH(f_fecha_expedicion)
                WHEN 4 THEN f_vlor_total
                ELSE 0
              END) AS Abril,
            SUM(CASE MONTH(f_fecha_expedicion)
                WHEN 5 THEN f_vlor_total
                ELSE 0
              END) AS Mayo,
            SUM(CASE MONTH(f_fecha_expedicion)
                WHEN 6 THEN f_vlor_total
                ELSE 0
              END) AS Junio
FROM  #tblPedidos
GROUP BY f_vendedor
ORDER BY f_vendedor


El resultado de esa consulta es algo más o menos así:


Vendedor
Abril
Mayo
Junio
1
125000.00
992450.00
211000.00
2
20000.00
.00
458000.56
3
.00
.00
100000.00

FOURIER 27-01-2007 13:00:31

Vendedor Abril Mayo Junio
1 1000 500 750
2 2000 400 800
3 3000 400 900


La franja horaria es GMT +2. Ahora son las 06:58:58.

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