Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   Problema con un join (https://www.clubdelphi.com/foros/showthread.php?t=10736)

argami 27-05-2004 15:20:59

Problema con un join
 
Estoy tratando de hacer una estadistica con un par de tablas

Código SQL [-]
select A.Descripcion, count(O.IdTrabajo) as Total, count(P.IdTrabajo) as Pend, count(Q.IdTrabajo) as Enfecha
from FGMDepar A
    Full Outer JOIN FGMTareas O on A.Departamento = O.Departamento
    Full Outer JOIN FGMTareas P on A.Departamento = P.Departamento and P.Fechaenvio is null
    Full Outer JOIN FGMTareas Q on A.Departamento = Q.Departamento and Q.Fecha = Q.Fechaenvio
group by A.Descripcion

Pero teniendo solo unos 200 registros el pend en uno de los departamentos me devuelve 5000 me imagino que de alguna manera esta llamando a la misma tabla unas cuantas veces y por eso devuelve esto sabria alguien como hacer que funcione

gracias

jachguate 27-05-2004 17:52:20

Que tipo de estadistica queres sacar?

De la forma que lo estas haciendo vas a obtener el mismo resultado en todos los count, pues todos se aplican sobre el mismo resultset....

marto 27-05-2004 18:47:12

Si haces FULL OUTER JOIN de todas las tablas, es normal que te devuelva más registros de los que filas tiene una de sus tablas....

De todas maneras, tiene razón jachguate, así a bote pronto la consulta no parece tener mucho sentido... ¿porqué no nos explicas qué se supone que tiene que devolver?

argami 28-05-2004 08:26:37

nesesito una linea de datos que me diga cuantos estan dentro de una fecha

Código SQL [-]
FechaEnvio = Fecha

cuantos no se han entregado

Código SQL [-]
FechaEnvio is null

Cuantos estan se entregaron fuera de la fecha

Código SQL [-]
FechaEnvio > Fecha

Todo esto lo deseo en un solo registro ya que lo quiero agrupar por departamentos que la descripcion esta en otra tabla es algo como:

Tareas ___________________ Departamento

Departamento ------------> Departamento
Fecha ____________________ Descripcion
FechaEnvio

y las estadisticas todas salen de tareas

gracias por contestar

jachguate 28-05-2004 09:01:46

Esto podes arreglarlo con subconsultas, pero no con un join, que es un producto cartesiano de las tablas.

La sentencia para dos conteos seria:
Código SQL [-]
Select a.descripcion, 
         (select count(*) 
            from fgmtareas o 
           where o.departamento = a.departamento) Total_tareas, 
         (select count(*) 
            from fgmtareas p
           where p.departamento = a.departamento
             and p.fechaenvio is null) Total_tareas_pendientes
  from fgmDepar a;

También verás que se ha resaltado la sintaxis de SQL en mi mensaje. Esto es debido a que uso la etiqueta [ sql ] en lugar de la etiqueta [ code ], que es un invento de Cadetill que hace mucho mas legible el código.

Hasta luego.

;)

argami 28-05-2004 09:08:38

va de lujo te lo agradezco la verdad desde que acabe hace 2 años el CFGS no he tocado sql y no me acordaba de las subselects te lo agradezco igualmente en mis pocos conocimientos si puedo ayudar en algo ya sabeis a donde dirigiros


La franja horaria es GMT +2. Ahora son las 22:26:28.

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