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

Obtener registro siguiente y anteior de uno específico

Estas en el tema de Obtener registro siguiente y anteior de uno específico en el foro de Bases de Datos General en Foros del Web. Hola, ayer pase unas horas intentando hacer una consulta pero no lo he logrado. Lo que quiero es sacar el registro siguiente y el anterior ...
  #1 (permalink)  
Antiguo 18/12/2010, 13:54
 
Fecha de Ingreso: diciembre-2009
Ubicación: Misiones
Mensajes: 867
Antigüedad: 14 años, 5 meses
Puntos: 65
Obtener registro siguiente y anteior de uno específico

Hola, ayer pase unas horas intentando hacer una consulta pero no lo he logrado.

Lo que quiero es sacar el registro siguiente y el anterior a uno especifico, algo como:

idActual - idAnterior - idSiguiente
---10-----------9-------------11-----

Cuando es por ordenado por id es sencillo haciendo una subconsulta y obteniendo el mayor y el menor al id actual, pero mi problema es que intento obtener el registro anterior con menor promedio y el siguiente con mayor promedio.

Si ordeno por promedio hay muchos promedios que son iguales y los id van a estar ordenados, también intenté enumerar filas pero para ordenar me quedan los promedios desordenados.

Si alguien sabe como obtenerlos u otra solución estaría agredecido

La idea es seleccionar el promedio de una foto actual, el registro anterior que va a ser la foto que tiene menor promedio que esa actual y el siguiete

Mis tablas con los campos relevantes


Código SQL:
Ver original
  1. CREATE TABLE IF NOT EXISTS `fotos` (
  2.   `id` INT(7) NOT NULL AUTO_INCREMENT,
  3.   PRIMARY KEY (`id`)
  4. );
  5.  
  6.  
  7. INSERT INTO `fotos` (`id`) VALUES
  8. (80), (81), (82), (83), (84), (85), (86);
  9.  
  10. CREATE TABLE IF NOT EXISTS `votos` (
  11.   `id` INT(7) NOT NULL,
  12.   `puntaje` INT(2) NOT NULL
  13. );
  14.  
  15. INSERT INTO `votos` (`id`, `puntaje`) VALUES
  16. (84, 3),(82, 4),(81, 3),(80, 4),(85, 4),(82, 3),(82, 3),(84, 5),(81, 4),(86, 4),(85, 3);


Esta es la consulta que tengo pero no funciona
Código SQL:
Ver original
  1. SELECT f.id, ROUND(AVG(v.puntaje), 1) promedio
  2. FROM fotos f, votos v
  3. WHERE v.id = f.id AND f.id <> 86
  4. GROUP BY v.id
  5. HAVING promedio <= (SELECT ROUND(AVG(v.puntaje), 1) FROM fotos f, votos v WHERE v.id = 86 AND f.id = 86)
  6. ORDER BY promedio DESC, f.id DESC
  7. LIMIT 1

Con esa intento sacar el menor a registro 86, me sale el 84 que tiene igual promedio y menor id pero cuendo saco el de 84 me muestra otra vez el 86, debería hacer una consición que sean menor al id actual pero después en otros no funciona porque los id son mayores

Gracias
  #2 (permalink)  
Antiguo 18/12/2010, 14:11
 
Fecha de Ingreso: noviembre-2010
Ubicación: Venezuela - Caracas
Mensajes: 103
Antigüedad: 13 años, 6 meses
Puntos: 0
Respuesta: Obtener registro siguiente y anteior de uno específico

Hola amigo, tengo este codigo, seguramente te resultara muy util para mostrar los correspondientes datos...

Código PHP:
<script language="php">
$conexion mysql_connect('localhost','root','');  //Ponemos los datos de conexion con MYSQL

mysql_select_db("TUBASEDEDATOS",$conexion); // Escribe el nombre de tu base de datos

$sql "select * from TU_TABLA";  //AQUI PUEDES PONER UN ORDEN con ASC O DESC

$result mysql_query($sql,$conexion); //REALIZA LA CONSULTA

echo "<table border='1' width='100%'>"//EMPIEZA A CREAR LA TABLA CON LOS ENCABEZADOS DE TABLA
echo "<tr >";//<tr> CREA UNA NUEVA FILA
echo "<td><font size='5'><b>Titulo</b></font></td>";//<td> CREA NUEVA COLUMNA
echo "<td><font size='5'><b>Noticia</b></font></td>";
echo 
"<td><font size='5'><b>Campo3</b></font></td>";
echo 
"</tr>";

while (
$reg mysql_fetch_array($resultMYSQL_BOTH))
{
echo 
"<tr >";
echo 
"<td>".$reg[0]."</td>"//En todos ponemos .$REG[IDColumna].
echo "<td>".$reg[1]."</td>";
echo 
"<td>".$reg[2]."</td>";
echo 
"</tr>";
}

echo 
"</table>";  // Dejamos de Filas y Columnas ( Finalizamos la tabla )
mysql_close($conexion);

</script> 
Es un basico para realizar una consulta, solo es cuestion de saber utilizarlo....
Espero haber respondido tu pregunta, si tienes duda solo consulta...

Saludos...
  #3 (permalink)  
Antiguo 18/12/2010, 14:23
 
Fecha de Ingreso: diciembre-2009
Ubicación: Misiones
Mensajes: 867
Antigüedad: 14 años, 5 meses
Puntos: 65
Respuesta: Obtener registro siguiente y anteior de uno específico

Gracias pero no se trata de mostrar los datos, se trata de obtenerlos

Etiquetas: registro, siguiente
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 19:24.