Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 20-07-2006
Avatar de Héctor Randolph
[Héctor Randolph] Héctor Randolph is offline
Miembro Premium
 
Registrado: dic 2004
Posts: 882
Poder: 20
Héctor Randolph Va por buen camino
¿En base a qué campo estas ordenando?

¿Podrías mostrarnos cómo realizas tu consulta?

Saludos
Responder Con Cita
  #2  
Antiguo 20-07-2006
Avatar de CarlosHernandez
CarlosHernandez CarlosHernandez is offline
Miembro
 
Registrado: oct 2003
Posts: 139
Poder: 21
CarlosHernandez Va por buen camino
codigo

Código SQL [-]
select min(h.he), max(h.hs), d.codigo, d.nombre, d.apellido, h.he from horas h, datos d
where d.ubicacion = : parubicacion and h.fecha = : parfecha group by d.codigo, d.nombre, d.apellido, h.he
order by h.he


los parametros son ubicacion y fecha, si no le coloco el order by lo hace pero todo desordenado, y con el order bey los duplica y se vuelve loco.....
__________________
begin
Elverdugo79@hotmail.com
end;
Responder Con Cita
  #3  
Antiguo 20-07-2006
Avatar de Héctor Randolph
[Héctor Randolph] Héctor Randolph is offline
Miembro Premium
 
Registrado: dic 2004
Posts: 882
Poder: 20
Héctor Randolph Va por buen camino
Algo está mal en la agrupación

No deberías mostrar el campo hora de entradas h.he en la consulta si es que vas a obtener un calculado del mismo en este caso min(h.he)

Es por eso que te repite los registros.

¿Cuál es la finalidad de mostrar este campo?, en caso de que sea necesario mostrarlo, ¿Cuál de todas las horas de entrada quieres mostrar cuando hagas la agrupación?

Saludos
Responder Con Cita
  #4  
Antiguo 20-07-2006
Avatar de CarlosHernandez
CarlosHernandez CarlosHernandez is offline
Miembro
 
Registrado: oct 2003
Posts: 139
Poder: 21
CarlosHernandez Va por buen camino
volviendo otra vez yo

aja y volviendo a la pregunta original(sigo de ladilla) no hay forma de manejar un ibquery(los registro desvueltos) como si fuera una tabla.. es por ejemplo hacerle un select al ibquery1 pero por el ibquery2

esto iria en el ibquery2

Código SQL [-]
select * from "ibquery1" where fecha:=parfecha
__________________
begin
Elverdugo79@hotmail.com
end;
Responder Con Cita
  #5  
Antiguo 20-07-2006
Avatar de CarlosHernandez
CarlosHernandez CarlosHernandez is offline
Miembro
 
Registrado: oct 2003
Posts: 139
Poder: 21
CarlosHernandez Va por buen camino
bueno, por ejemplo, son 10 persona en un departamento, y necesito la 1 entrada y ultima salida de cada una.... en la tabla hora estan todas las horas por eso es que uso el min y el max... y por supuesto necesito ver las 10 personas que esten en un mismo departamento...
__________________
begin
Elverdugo79@hotmail.com
end;
Responder Con Cita
  #6  
Antiguo 20-07-2006
Avatar de Héctor Randolph
[Héctor Randolph] Héctor Randolph is offline
Miembro Premium
 
Registrado: dic 2004
Posts: 882
Poder: 20
Héctor Randolph Va por buen camino
Con respecto a la pregunta original, en la versión 2.0 de Firebird existen las Derived
Tables
con esto puedes hacer lo que planteas.

Para las versiones anteriores, seguro que se puede lograr con procedimientos almacenados.

Saludos
Responder Con Cita
  #7  
Antiguo 20-07-2006
Avatar de Héctor Randolph
[Héctor Randolph] Héctor Randolph is offline
Miembro Premium
 
Registrado: dic 2004
Posts: 882
Poder: 20
Héctor Randolph Va por buen camino
¿Lo has intentado quitando el campo h.he?

Código SQL [-]
select min(h.he), max(h.hs), d.codigo, d.nombre, d.apellido from horas h, datos d
where d.ubicacion = : parubicacion and h.fecha = : parfecha group by d.codigo, d.nombre, d.apellido
order by 1
Responder Con Cita
  #8  
Antiguo 20-07-2006
Avatar de CarlosHernandez
CarlosHernandez CarlosHernandez is offline
Miembro
 
Registrado: oct 2003
Posts: 139
Poder: 21
CarlosHernandez Va por buen camino
listo

hector, con lo del 1 ya se soluciono lo de los registeros duplicado, y lo que hice para terminar el codigo le agregue un left join para mostrar a todo el mundo de personal.... ey hermano altamente agradecido a y una pregunta final porque con el 1(numero de columna) no se duplica, y si pongo h.he si se duplica?????
__________________
begin
Elverdugo79@hotmail.com
end;
Responder Con Cita
  #9  
Antiguo 20-07-2006
Avatar de Héctor Randolph
[Héctor Randolph] Héctor Randolph is offline
Miembro Premium
 
Registrado: dic 2004
Posts: 882
Poder: 20
Héctor Randolph Va por buen camino
En tu sentencia estas indicando que agrupe con respecto a tres campos:
(codigo,nombre,apellido)

todas las tuplas que coincidan en estos tres campos serán agrupadas por ejemplo

Código:
codigo nombre       apellido          he
===== =====       =======       ====
1         carlos        hernandez       1
1         carlos        hernandez       2
1         carlos        hernandez       4
1         carlos        hernandez       2
------------ grupo 1 ------------
2         hector        randolph         6
2         hector        randolph         1
2         hector        randolph         1
2         hector        randolph         2
2         hector        randolph         5
------------ grupo 2 ------------
Si pides el mínimo de cada grupo el resultado sería

Código:
codigo nombre       apellido          MIN(he)
===== =====       =======       ====
1         carlos        hernandez       1
2         hector        randolph        1
Si incluyes el campo he la agrupación sería por estos cuatro campos:
(codigo,nombre,apellidos,he)

Todas las tuplas que coincidan en estos cuatro campos serán agrupadas

Código:
codigo nombre       apellido          he
===== =====       =======       ====
1         carlos        hernandez       1
------------ grupo 1 ------------
1         carlos        hernandez       2
1         carlos        hernandez       2
------------ grupo 2 ------------
1         carlos        hernandez       4
------------ grupo 3 ------------
2         hector        randolph         6
------------ grupo 4 ------------
2         hector        randolph         1
2         hector        randolph         1
------------ grupo 5 ------------
2         hector        randolph         2
------------ grupo 6------------
2         hector        randolph         5
------------ grupo 7 ------------
Ahora si pides el mínimo de cada grupo el resultado sería

Código:
codigo nombre       apellido          he      MIN(he)
===== =====       =======       ====   =====
1         carlos        hernandez       1       1
1         carlos        hernandez       2       2
1         carlos        hernandez       4       4
2         hector        randolph         6       6
2         hector        randolph         1      1
2         hector        randolph         2      2
2         hector        randolph         5      5
Observa bien la manera en que se están agrupando los registros, y verás que si hay una gran diferencia cuando incluyes el campo he

Saludos
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
Refresh de un IBQuery perillan Conexión con bases de datos 1 28-08-2005 20:43:12
Filter en IBQuery StartKill Firebird e Interbase 1 27-08-2005 06:51:06
IBUpdateSQL - IBQuery dmagui Firebird e Interbase 3 11-07-2005 16:59:54
IBdataset y IBQuery vtdeleon Firebird e Interbase 2 17-05-2005 22:05:29
IBQuery y Rave pkbza Conexión con bases de datos 0 13-08-2004 23:35:56


La franja horaria es GMT +2. Ahora son las 13:10:40.


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