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

Ultimas 10 registros o 10 mas vistos

Estas en el tema de Ultimas 10 registros o 10 mas vistos en el foro de Mysql en Foros del Web. Hola, quisiera saber como sacar los 10 ultimos registros de una base de datos y los 10 mas visitados ( consultados )... Alguna sugerencia ???? ...
  #1 (permalink)  
Antiguo 08/09/2006, 10:37
 
Fecha de Ingreso: enero-2004
Ubicación: Bcn
Mensajes: 20
Antigüedad: 20 años, 3 meses
Puntos: 0
Pregunta Ultimas 10 registros o 10 mas vistos

Hola, quisiera saber como sacar los 10 ultimos registros de una base de datos y los 10 mas visitados ( consultados )...

Alguna sugerencia ????

Muchisimas gracias!!!
__________________
..:: Fr@n!! ::..
  #2 (permalink)  
Antiguo 08/09/2006, 16:19
Avatar de Mithrandir
Colaborador
 
Fecha de Ingreso: abril-2003
Mensajes: 12.106
Antigüedad: 21 años
Puntos: 25
Para los 10 más recientes necesitas auxiliarte de un campo de fecha que indique la creación. O de un campo incremental que te permita obtener los 10 últimos.

El concepto de los "registros más recientes" no existe en SQL Server.

Para los más visitados necesitas crear un registro de visitas que te permita de primera instancia almacenar lo ejecutado para después analizar qué es lo más accesado.
__________________
"El hombre, en su orgullo, creó a Dios a su imagen y semejanza."
Friedrich Nietzsche
  #3 (permalink)  
Antiguo 08/09/2006, 16:42
 
Fecha de Ingreso: enero-2004
Ubicación: Bcn
Mensajes: 20
Antigüedad: 20 años, 3 meses
Puntos: 0
Uff..

Muchas gracias Mithrandir, soy algo nuevo en esto de sql, podrías poner un brevisimo ejemplo o explicar algo más "entendible" para un novato penco ¿¿?? si por lo que fuera no pudieras explicarlo o aplicarlo a algun ejemplo, me podrías decir un buen manual donde te explicara exactamente lo que busco ?

De nuevo, muchisimas gracias.
__________________
..:: Fr@n!! ::..
  #4 (permalink)  
Antiguo 08/09/2006, 18:37
Avatar de bitbow  
Fecha de Ingreso: julio-2006
Ubicación: Distrito Federal
Mensajes: 635
Antigüedad: 17 años, 9 meses
Puntos: 34
Disculpa, que base de datos trabajas?
Si tienes entre tus campos uno que sea la fecha de creacion del archivo, hora o algun registro incremental puedes usar el "ORDER BY" para lo de los 10 mas visitados debes de utilizar un campo en donde crees alguna funcion que cada que accedan a es seccion se incremente en uno e igual con el "ORDER BY " + "LIMIT".

Saludos.
__________________
El ego es el mayor enemigo de un hombre inteligente.
  #5 (permalink)  
Antiguo 09/09/2006, 08:55
 
Fecha de Ingreso: enero-2004
Ubicación: Bcn
Mensajes: 20
Antigüedad: 20 años, 3 meses
Puntos: 0
Sql

Hola bitbow, trabajo con sql. ok!, pillo lo de los 10 ultimos:

Select top 10 * from piso order by ID DESC.

Sería así, no ???

Los 10 más visitados ya me cuesta algo más... no llego a entender el concepto que explicas, podríais explicaros ???

Gracias por vuestra ayuda, la verdad que me está llendo de perla.

Salu2,
__________________
..:: Fr@n!! ::..
  #6 (permalink)  
Antiguo 09/09/2006, 13:23
 
Fecha de Ingreso: noviembre-2005
Mensajes: 658
Antigüedad: 18 años, 5 meses
Puntos: 3
Para los 10 ultimos tu query es la correcta... con order by desc y top 10....

Para saber cuales son los mas consultados; eso requiere de programacion....
1.- Creas un campo adicional en la tabla de tipo INTEGER
2.- Por la aplicacion lo que debes de hacer es cuando alguien consulta el campo; haces un update a esa columna sumandole un 1... con eso registras la visita
3.- Para consultar despues cuales son los mas visitados hace
SELECT TOP 10 TUCAMPOCLAVE, COUNT(CAMPONUEVO)
FROM TUTABLA
GROUP BY TUCAMPOCLAVE, COUNT(CAMPONUEVO)
ORDER BY TUCAMPOCLAVE, COUNT(CAMPONUEVO) DESC

Y LISTO
  #7 (permalink)  
Antiguo 09/09/2006, 15:40
 
Fecha de Ingreso: enero-2004
Ubicación: Bcn
Mensajes: 20
Antigüedad: 20 años, 3 meses
Puntos: 0
Si!

Olé, entendido a la perfección!!!

Muchisimas gracias monkyta!!!

Lo que no entiendo es porque no me funciona mi query... q hago mal ?? os enseño el codigo...

include("ConexionBaseDatos.php");
$link=Conectarse();
$result=mysql_query("SELECT TOP 10 * FROM tabla ORDER BY Id DESC",$link);

while($row = mysql_fetch_array($result))
{
printf("
<tr>
<td><strong><div align=center> &nbsp;%s </td>
<td><strong><div align=center> &nbsp;%s </td>
<td><strong><div align=center> &nbsp;%s </td>
<td><strong><div align=center> &nbsp;%s </td>
<td><strong><div align=center> &nbsp;%s </td>
<td><strong><div align=center> &nbsp;%s </td>
<td><strong><div align=center> &nbsp;%s </td>
<td><strong><div align=center> &nbsp;%s </td>
<td><strong><div align=center> &nbsp;%s </td>
</tr>

<tr><td><br></td></tr>", $row["campo1"], $row["campo2"],$row["campo3"],$row["campo4"],$row["campo5"],$row["campo6"],$row["campo7"],$row["campo8"],$row["campo9"]
);
}
mysql_free_result($result);
mysql_close($link);
?>

Podéis hexarme un cable ???

Os enseño el error:

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /inicio1.php on line 50

Line 50 : while($row = mysql_fetch_array($result))

Osea la variable $result=mysql_query("SELECT TOP 10 * FROM tabla ORDER BY Id DESC",$link);

¿?
__________________
..:: Fr@n!! ::..

Última edición por Alocao; 09/09/2006 a las 15:44 Razón: Os enseño el error...
  #8 (permalink)  
Antiguo 09/09/2006, 18:22
 
Fecha de Ingreso: noviembre-2005
Mensajes: 658
Antigüedad: 18 años, 5 meses
Puntos: 3
Eso que te pasa es porque está fallando la query y el error no lo estas controlando... .. para poder ver que error te esta dando haz esto :

<?php

$result = mysql_query("SELECT TOP 10 * FROM tabla ORDER BY Id DESC",$link);
if (!$result) {
echo mysql_error();
exit;
}
?>
  #9 (permalink)  
Antiguo 09/09/2006, 18:41
 
Fecha de Ingreso: enero-2004
Ubicación: Bcn
Mensajes: 20
Antigüedad: 20 años, 3 meses
Puntos: 0
Muchas gracias por la info monkyta

me devolvía el siguiente error:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '10 * FROM tabla ORDER BY Id DESC' at line 1

Me he rebanado los seso y he buscado algo y al final lo he dejado con la siguiente query:

SELECT * FROM tabla LIMIT 10

Con esta query me funciona... Ahora me liaré con la solución de las 10 más visitadas...

Gracias!!!

"Rectifico, no funciona, sólo saca los 10 últimos registros... y ni siquiera están ordenados..."
__________________
..:: Fr@n!! ::..

Última edición por Alocao; 09/09/2006 a las 18:55
  #10 (permalink)  
Antiguo 09/09/2006, 19:00
foo
 
Fecha de Ingreso: febrero-2006
Mensajes: 278
Antigüedad: 18 años, 2 meses
Puntos: 0
Cita:
Iniciado por Alocao Ver Mensaje
Muchas gracias por la info monkyta

me devolvía el siguiente error:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '10 * FROM tabla ORDER BY Id DESC' at line 1

Me he rebanado los seso y he buscado algo y al final lo he dejado con la siguiente query:

SELECT * FROM tabla LIMIT 10

Con esta query me funciona... Ahora me liaré con la solución de las 10 más visitadas...

Gracias!!!
este sub foro es de sql server, no mysql... seria bueno que hagas la pregunta en el lugar correcto, asi recibiras ayuda mas precisa
Cita:
"Rectifico, no funciona, sólo saca los 10 últimos registros... y ni siquiera están ordenados..."
es porque en ningun lado estas indicando que ordene...
  #11 (permalink)  
Antiguo 09/09/2006, 19:01
 
Fecha de Ingreso: enero-2004
Ubicación: Bcn
Mensajes: 20
Antigüedad: 20 años, 3 meses
Puntos: 0
Ops

Ok, lo siento, pensaba que estaba en el lugar correcto... Sorry!
__________________
..:: Fr@n!! ::..
  #12 (permalink)  
Antiguo 12/09/2006, 15:09
Avatar de Mithrandir
Colaborador
 
Fecha de Ingreso: abril-2003
Mensajes: 12.106
Antigüedad: 21 años
Puntos: 25
Movido de SQL Server
__________________
"El hombre, en su orgullo, creó a Dios a su imagen y semejanza."
Friedrich Nietzsche
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 21:11.