Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » PostgreSQL »

10 registros más actuales

Estas en el tema de 10 registros más actuales en el foro de PostgreSQL en Foros del Web. Tengo una base de datos con un campo "FECHA_ALTA" de tipo Date. Necesitos buscar los 10 más actuales (los la fecha más actual del campo ...
  #1 (permalink)  
Antiguo 21/01/2009, 05:40
 
Fecha de Ingreso: octubre-2008
Ubicación: Madrid
Mensajes: 352
Antigüedad: 16 años, 1 mes
Puntos: 5
10 registros más actuales

Tengo una base de datos con un campo "FECHA_ALTA" de tipo Date.
Necesitos buscar los 10 más actuales
(los la fecha más actual del campo "FECHA_ALTA").

¿Como sería la query?

select * from candidatos where "NOMBRE" ilike '%jose%' AND .... ;
  #2 (permalink)  
Antiguo 21/01/2009, 05:46
 
Fecha de Ingreso: noviembre-2008
Ubicación: Madrid, España
Mensajes: 149
Antigüedad: 16 años
Puntos: 5
Respuesta: 10 registros más actuales

SELECT TOP 10 FROM CANDIDATOS WHERE nombre LIKE '%jose%' ORDER BY FECHA_ALTA DESC
  #3 (permalink)  
Antiguo 21/01/2009, 05:48
 
Fecha de Ingreso: noviembre-2008
Ubicación: Madrid, España
Mensajes: 149
Antigüedad: 16 años
Puntos: 5
Respuesta: 10 registros más actuales

Perdón:

SELECT TOP 10 (nombres de los campos separados por comas) FROM CANDIDATOS WHERE nombre LIKE '%jose%' ORDER BY FECHA_ALTA DESC
  #4 (permalink)  
Antiguo 21/01/2009, 06:34
 
Fecha de Ingreso: octubre-2008
Ubicación: Madrid
Mensajes: 352
Antigüedad: 16 años, 1 mes
Puntos: 5
Respuesta: 10 registros más actuales

No me funciona y he probado con todo lo que se me ocurre, me da error en el 10, lo he puesto con comas comillas y nada...
Haber si ves el error...
Muchas gracias.
  #5 (permalink)  
Antiguo 21/01/2009, 07:36
 
Fecha de Ingreso: noviembre-2008
Ubicación: Madrid, España
Mensajes: 149
Antigüedad: 16 años
Puntos: 5
Respuesta: 10 registros más actuales

Postea tanto la sentencia que has probado como la descripción del error, por favor.

¿Qué motor de base de datos estás usando?
  #6 (permalink)  
Antiguo 21/01/2009, 09:52
 
Fecha de Ingreso: octubre-2008
Ubicación: Madrid
Mensajes: 352
Antigüedad: 16 años, 1 mes
Puntos: 5
Respuesta: 10 registros más actuales

SELECT TOP 10 "NOMBRE" FROM candidatos WHERE nombre LIKE '%jose%' ORDER BY FECHA_ALTA DESC;

Uso pgAdminIII


ERROR: syntax error at or near "10"
LINE 1: SELECT TOP 10 "NOMBRE" FROM candidatos WHERE nombre LIKE '%j...
^


********** Error **********

ERROR: syntax error at or near "10"



He provado poniendo delante en medio top con comillas sin ellas...todo lo que se me ha ocurrido y nada...
  #7 (permalink)  
Antiguo 21/01/2009, 10:35
 
Fecha de Ingreso: noviembre-2008
Ubicación: Madrid, España
Mensajes: 149
Antigüedad: 16 años
Puntos: 5
Respuesta: 10 registros más actuales

Hum...entonces quizá sea del motor de base de datos, ya que la sentencia en esta forma:

SELECT TOP 10 NOMBRE FROM candidatos WHERE nombre LIKE '%jose%' ORDER BY FECHA_ALTA DESC

Funciona perfectamente en SQLServer. Desconozco si los nombres de campos a nivel individual se especifican de manera diferente en pgAdmin, porque no lo he utilizado nunca. Pero lo que sí te aconsejo (no estoy seguro de haber entendido si lo has hecho o no) es que hagas dos cosas:

1) Probar la sentencia, tal y como me la has dicho, sin las comillas en "NOMBRE"

2) Revisar la documentación de pgAdmin para conocer la sintaxis de especificación de nombres de campos. Se me ocurren algunas posibles causas para que esa sentencia no funcione:

a) Que los nombres de campos en pgAdmin sean case sensitive. Es decir, que las mayúsculas y minúsculas se tomen en cuenta a la hora de ejecutar la sentencia, con lo cual puede que el campo se llame Nombre o nombre y, al poner el identificador del campo totalmente en mayúsculas, el motor no te lo reconozca

b) Que tengas que utilizar algún delimitador para especificar los identificadores de los campos, como unos corchetes (y tuvieras que escribir SELECT TOP 10 [Nombre] ....)

c) Que pgAdmin no entienda la palabra reservada TOP, con lo cual deberías revisar la documentación en busca de alguna otra keyword o mecanismo equivalente.

Pero, sin duda, en primer lugar, probaría a ejecutar, si no lo has hecho, la sentencia de este modo:

SELECT TOP 10 NOMBRE FROM candidatos WHERE nombre LIKE '%jose%' ORDER BY FECHA_ALTA DESC;

Espero haberte sido de ayuda.

P.D: Cuando hablo de "identificadores" de campos, hablo de sus nombres, pero no he querido emplear el término "nombre" para no liarte con la explicación.
  #8 (permalink)  
Antiguo 21/01/2009, 12:15
 
Fecha de Ingreso: octubre-2008
Ubicación: Madrid
Mensajes: 352
Antigüedad: 16 años, 1 mes
Puntos: 5
Respuesta: 10 registros más actuales

Claro en sqlserver pero esto es postgres...

Es un foro de postgres y eso no funciona con postgres...

Haber si alguien lo sabe hacer para postgres...
  #9 (permalink)  
Antiguo 21/01/2009, 13:00
Avatar de michael_045  
Fecha de Ingreso: enero-2009
Mensajes: 13
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: 10 registros más actuales

Tal vez la respuesta es muy tarde pero espero te sirva
lo k tienes k hacer es hacer lo siguiente
--------------
SET ROWCOUNT 10
SELECT * FROM CANDIDATOS WHERE nombre LIKE '%jose%' ORDER BY FECHA_ALTA DESC
SET ROWCOUNT 0
-------------

espero te sirva, aun que no sea muy tarde.

Salu2.
  #10 (permalink)  
Antiguo 21/01/2009, 14:07
 
Fecha de Ingreso: octubre-2008
Ubicación: Madrid
Mensajes: 352
Antigüedad: 16 años, 1 mes
Puntos: 5
Respuesta: 10 registros más actuales

michael_045 da error en la primera línea...

La respuesta es :

SELECT * FROM candidatos WHERE "FECHA_ALTA" is not null ORDER BY "FECHA_ALTA" DESC LIMIT 10;


Muchas gracias a los dos por vuestro interes.
Un saludo.
  #11 (permalink)  
Antiguo 21/01/2009, 16:46
 
Fecha de Ingreso: noviembre-2008
Ubicación: Madrid, España
Mensajes: 149
Antigüedad: 16 años
Puntos: 5
Respuesta: 10 registros más actuales

Cita:
Iniciado por jlgarcia1977 Ver Mensaje
michael_045 da error en la primera línea...

La respuesta es :

SELECT * FROM candidatos WHERE "FECHA_ALTA" is not null ORDER BY "FECHA_ALTA" DESC LIMIT 10;


Muchas gracias a los dos por vuestro interes.
Un saludo.
Ups, no me di cuenta de lo del foro, perdona. Al menos, veo que la idea que te dí sí te sirvió de orientación :)

Buena suerte para el futuro
  #12 (permalink)  
Antiguo 22/01/2009, 03:01
 
Fecha de Ingreso: febrero-2007
Mensajes: 1.292
Antigüedad: 17 años, 9 meses
Puntos: 13
Respuesta: 10 registros más actuales

En la select que te han dado quita TOP (SQLServer)
Añade LIMIT 10 al final.

Código:
SELECT * 
FROM CANDIDATOS 
WHERE nombre LIKE '%jose%' 
ORDER BY FECHA_ALTA DESC
limit 10
  #13 (permalink)  
Antiguo 22/01/2009, 03:59
 
Fecha de Ingreso: octubre-2008
Ubicación: Madrid
Mensajes: 352
Antigüedad: 16 años, 1 mes
Puntos: 5
Respuesta: 10 registros más actuales

Seyko esta ya respondida dos mensajes más arriba.
Gracias.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:27.