Foros del Web » Programando para Internet » ASP Clásico »

problema con funcion TOP 3

Estas en el tema de problema con funcion TOP 3 en el foro de ASP Clásico en Foros del Web. Hola, tengo el siguiente problema, utilizo la funcion: <% sSql = "SELECT TOP 3 * FROM noticias where mostrarnoticia='si' order by fecha Desc" Set RS ...
  #1 (permalink)  
Antiguo 17/03/2003, 06:07
 
Fecha de Ingreso: mayo-2002
Mensajes: 197
Antigüedad: 23 años
Puntos: 0
problema con funcion TOP 3

Hola, tengo el siguiente problema, utilizo la funcion:

<%
sSql = "SELECT TOP 3 * FROM noticias where mostrarnoticia='si' order by fecha Desc"
Set RS = Server.CreateObject("ADODB.Recordset")
RS.Open sSQL, oConn,3,1
colorfila = 0
%>

para seleccionar los tres ultimos registros de la base de datos, pero resulta que si los registros de la base son pares me coge 3 como tiene que ser, pero si son impares me coge 4.

¿Alguien sabe que me puede ocurrir?

Un saludo.
  #2 (permalink)  
Antiguo 17/03/2003, 06:24
 
Fecha de Ingreso: mayo-2002
Mensajes: 197
Antigüedad: 23 años
Puntos: 0
Ya esta solucionado, no era cosa del numero de registros, si no de que si el tercer registro tenia la misma fecha que el cuarto me ponia 4, si tambien tenia la misma fecha que el quinto me ponia 5 y asi.

Bueno, le he cambiado el order by fecha Desc por order by id Desc, y aunque no era exactamente lo que yo queria, no se nota mucho .

Un saludo
  #3 (permalink)  
Antiguo 17/03/2003, 17:16
Avatar de lubetpic  
Fecha de Ingreso: enero-2002
Ubicación: San Jose
Mensajes: 679
Antigüedad: 23 años, 3 meses
Puntos: 0
extraño porque no deberia de darte problemas al limitar la busqueda a 3 registros

ahi no importa la fecha, simplemente deberia de tomar 3 registros y punto
  #4 (permalink)  
Antiguo 17/03/2003, 17:19
Avatar de maestro  
Fecha de Ingreso: febrero-2002
Ubicación: España
Mensajes: 2.364
Antigüedad: 23 años, 3 meses
Puntos: 1
Que cosa mas rara
__________________
Jose Maria Fernandez
[email protected]
Http://www.expansionweb.net
  #5 (permalink)  
Antiguo 17/03/2003, 18:15
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 24 años, 2 meses
Puntos: 535
Si, es raro... acabo de recrear la situación y efecitivamente así ocurrió.

Tal vez no sea raro y sea así como debería funcionar =)
__________________
...___...
  #6 (permalink)  
Antiguo 09/03/2004, 07:39
 
Fecha de Ingreso: enero-2004
Mensajes: 57
Antigüedad: 21 años, 3 meses
Puntos: 0
un Top 5

Hola! quisiera hacar un TOP 5 y he visto que tu tenías problemas... es que a mi el problema es que me muestra todos los registros de la base.
¿Cómo hiciste tú el TOP 3?
Me interesa saber, principalmete, cómo muestras los valores porque lo demás lo tengo y me sale todo bien menos eso; que no me salen 5 sino ciento y la madre (toda la base de datos...)

Weno, espero no molestarte.

Gracias!!
  #7 (permalink)  
Antiguo 09/03/2004, 09:08
 
Fecha de Ingreso: abril-2003
Ubicación: Madrid
Mensajes: 707
Antigüedad: 22 años, 1 mes
Puntos: 0
Respecto a como hacer un TOP 5 es tal y como explica en el primer mensaje

Respecto a lo curioso que resulta el hecho de pedir tres datos y que te muestre más de lo que estás pidiendo, depende un poco del motor de base de datos que estés utilizando, he hecho la prueba en Access (97 y xp) y en los dos hace exactamente eso.

He hecho la prueba en SQL-Server 7.0 desde el analizador de consultas, y devuelve justo tres, supongo que debe ser un error de JET, no puede diferenciar cuáles son los tres primeros registros cuando ordenas por un campo que se repite.

Una cosa más:
La consulta en Access contra SQL server, por medio de tablas vinculadas devuelve más registros, tal y como explicáis, pero si hago la consulta como una consulta de paso a través... me devuelve sólo los tres registros que pedí.

En fin .... debe ser eso, JET

Un saludo
  #8 (permalink)  
Antiguo 09/03/2004, 10:15
 
Fecha de Ingreso: mayo-2002
Mensajes: 197
Antigüedad: 23 años
Puntos: 0
jeje, me es curioso volver a ver mi post un año despues.

Para que necesitaria lo del top 3???
  #9 (permalink)  
Antiguo 09/03/2004, 10:20
 
Fecha de Ingreso: enero-2004
Mensajes: 57
Antigüedad: 21 años, 3 meses
Puntos: 0
Gracias!

Gracias por todo... probaré a ver ;)
  #10 (permalink)  
Antiguo 11/03/2004, 09:17
 
Fecha de Ingreso: enero-2004
Mensajes: 57
Antigüedad: 21 años, 3 meses
Puntos: 0
no me aclaro...

Hola! Gracias por todo pero es que no sé qué es eso del Jet...
El SQL-Server 7.0 es un programa?
Lo que me ocurre es que si hay 7 campos con 5 visitas, me devuelve los 7 campos y no 5 como yo quiero....

Si uso un for o while o algo así? Alguien me pueda dar alguna idea?

Mil gracias!!
  #11 (permalink)  
Antiguo 11/03/2004, 10:27
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 24 años, 2 meses
Puntos: 535
while (not rs.EOF) or (i < 5)
response.write("un_campo") & "<br>"
i = i + 1
wend
__________________
...___...
  #12 (permalink)  
Antiguo 11/03/2004, 14:43
 
Fecha de Ingreso: enero-2004
Mensajes: 57
Antigüedad: 21 años, 3 meses
Puntos: 0
no me sale...

Hola! Lo he hecho y no me sale , me siguen saliendo un motón de registros.
Yo quiero que los registros se vean en una tabla, asi:

Código:
<%
Set rs=Server.CreateObject("ADODB.RecordSet")
rs.open SQL, oConn, 3, 1
While (not rs.EOF) or (i < 5)
i=i+1
%> 
       <tr>
         <td><%=rs.Fields("seccion") %></td>
        <td>=rs.Fields("titulo") %></td>
        <td><%=rs.Fields("clicks") %></td>
      </tr>
<%
rs.MoveNext
Wend
%>
Eso se pone así? Otra cosa, el i lo tengo que poner a cero al principio (i=0) o algo?

Quizá me equivoque al llamar a la base, lo pongo tb por si alguien ve algún fallo:

SQL="SELECT TOP 5 clicks, titulo, seccion FROM count ORDER BY clicks DESC"

Weno, gracias por todo!
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 12:01.