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 15-10-2011
JXJ JXJ is offline
Miembro
 
Registrado: abr 2005
Posts: 2.475
Poder: 22
JXJ Va por buen camino
Question ¿como obtener la fecha mas reciente y la mas antigua?

hola

tengo el problema de obtener la fecha mas reciente y mas antigua de un
listado de productos.

con firebird que sentencia se usa.
los campos son datetime.

aunque tambien tengo otros campos de tipo date.


encontre que con esto obtengo el registro mas reciente.

el primer registro indicado por el numero 1

Código SQL [-]
select first 1 id, numerodeserie, validodesde from productos;

pero como obtengo el mas antiguo?


este no me sirve
Código SQL [-]
select min(validodesde ) from productos por que solo me da la fecha y yo quiero aparte el id , numerodeserie

esta bien o ando haciendo algo mal hay mejores formas??
Responder Con Cita
  #2  
Antiguo 15-10-2011
JXJ JXJ is offline
Miembro
 
Registrado: abr 2005
Posts: 2.475
Poder: 22
JXJ Va por buen camino
Question

creo que esta puede servirme
Código SQL [-]
select  id, min(validodesde) as fechaantigua from certificado
group by 1

el problema es qeu si tengo varios registros con la misma fecha me los trae todos.
el otro problema es que solo pueod poner 2 campos

si la pongo asi.

Código SQL [-]
select  id, ACTIVO, min(validodesde) as fechaantigua from certificado
group by 1

me da el error

Engine Error (code = 335544569):
Dynamic SQL Error.
SQL error code = -104.
Invalid expression in the select list (not contained in either an aggregate function or the GROUP BY clause).

SQL Error (code = -104):
Invalid token.

¿cual pondria como agregate ?
Responder Con Cita
  #3  
Antiguo 15-10-2011
Avatar de D-MO
D-MO D-MO is offline
Miembro
 
Registrado: ago 2005
Ubicación: root@debian:/#
Posts: 1.042
Poder: 20
D-MO Va por buen camino
desconozco firebird, pero ¿porqué haces group by 1 en lugar de id y/o ACTIVO?
Responder Con Cita
  #4  
Antiguo 15-10-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola JXJ.

Probá de este modo:
Código SQL [-]
SELECT FIRST 1 T1.ID_TABLA, T1.VALIDODESDE, T1.ACTIVO, 
FROM TABLA T1
WHERE T1.VALIDODESDE = (SELECT  MIN(T2.VALIDODESDE) FROM TABLA T2)
GROUP BY T1.ID_TABLA, T1.VALIDODESDE, T1.ACTIVO

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #5  
Antiguo 15-10-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Cita:
Empezado por D-MO Ver Mensaje
desconozco firebird, pero ¿porqué haces group by 1 en lugar de id y/o ACTIVO?
Hola D-MO.

Si bién Firebird permite usar números para hacer referencia a columnas, no es aconsejable ya que es una técnica obsoleta. Se recomienda el uso de sinónimos en su lugar.

Con el uso de números:
Código SQL [-]
SELECT ID_TABLA, NUM1 - NUM2
FROM TABLA
ORDER BY ID_TABLA, 2

Recomendada:
Código SQL [-]
SELECT ID_TABLA, NUM1 - NUM2 AS DIFERENCIA
FROM TABLA
ORDER BY ID_TABLA, DIFERENCIA

Un saludo.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 15-10-2011 a las 11:45:30. Razón: corrección de horror ortográfico
Responder Con Cita
  #6  
Antiguo 15-10-2011
Avatar de D-MO
D-MO D-MO is offline
Miembro
 
Registrado: ago 2005
Ubicación: root@debian:/#
Posts: 1.042
Poder: 20
D-MO Va por buen camino
Gracias ecfisa por el comentario, a decir verdad algo así suponía pero no veo la razón de utilizarlo así ya que es mas legible utilizar los nombres de los campos o alias, tal y como comentas.

Ahora, con respecto a esta consulta:
Cita:
Empezado por ecfisa Ver Mensaje
Código SQL [-]
SELECT FIRST 1 T1.ID_TABLA, T1.VALIDODESDE, T1.ACTIVO, 
FROM TABLA T1
WHERE T1.VALIDODESDE = (SELECT  MIN(T2.VALIDODESDE) FROM TABLA T2)
GROUP BY T1.ID_TABLA, T1.VALIDODESDE, T1.ACTIVO
Pregunto, ¿Porqué anidar el min()?

Saludos.
Responder Con Cita
  #7  
Antiguo 15-10-2011
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Poder: 24
guillotmarc Va por buen camino
Hola.

Más reciente :

select first 1 id, numerodeserie, validodesde
from productos
order by validodesde descending;

Mas antiguo :

select first 1 id, numerodeserie, validodesde
from productos
order by validodesde ascending;

Es la misma consulta, cogiendo el primer registro, ordenado por fecha de mayor a menor, o bien de menor a mayor.

Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).
Responder Con Cita
  #8  
Antiguo 15-10-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Cita:
Empezado por D-MO Ver Mensaje
Pregunto, ¿Porqué anidar el min()?
Creo que fué por que eran pasadas las 4 de la mañana (tengo que entregar un trabajo el lunes) y tenía las neuronas medio aletargadas...

Pero yá Marc, le ha dado una excelente respuesta.

Un saludo.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #9  
Antiguo 15-10-2011
JXJ JXJ is offline
Miembro
 
Registrado: abr 2005
Posts: 2.475
Poder: 22
JXJ Va por buen camino
el

group by 1

y el min()
lo encontre en buscando en internet..
en lugar de last.

voy a revisarlos a ver que tal me queda. muchas gracias. a todos.
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
Post solo para viejitos...y jóvenes que quieren saber como era la informática antigua AzidRain La Taberna 5 14-12-2010 16:53:26
¿cómo puedo obtener la fecha y la hora actual con netbeans? rls JAVA 7 12-08-2010 07:51:56
Cómo obtener la fecha actual en una sqlquery Mauro® Conexión con bases de datos 4 12-04-2006 15:23:39
Como obtener la hora y fecha de otro equipo fayala Varios 4 31-01-2006 19:52:21
cómo obtener la fecha del PC jpcancino Varios 2 16-02-2004 16:08:02


La franja horaria es GMT +2. Ahora son las 20:45:30.


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