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

Cómo puedo elegir el 2° mayor, el 3° mayor ó el 4° mayor en una consulta sql

Estas en el tema de Cómo puedo elegir el 2° mayor, el 3° mayor ó el 4° mayor en una consulta sql en el foro de Bases de Datos General en Foros del Web. Tengo ese problema en un sitio web que hice... tengo noticias en mi base de datos enumeradas sólo por id.... hasta el momento llevo 10 ...
  #1 (permalink)  
Antiguo 20/08/2010, 17:26
 
Fecha de Ingreso: diciembre-2009
Mensajes: 24
Antigüedad: 15 años
Puntos: 0
Cómo puedo elegir el 2° mayor, el 3° mayor ó el 4° mayor en una consulta sql

Tengo ese problema en un sitio web que hice...
tengo noticias en mi base de datos enumeradas sólo por id.... hasta el momento llevo 10 en el sitio...
Mi problema es que necesito llamar en una tabla diferente de html a:
- el id mayor (que sería la noticia más reciente)... este es fácil... pero...
- el id siguiente al mayor (la segunda noticia más reciente)...
- el id siguiente al segundo mayor (la tercera noticia más reciente)...
- el id siguiente al tercer mayor (la cuarta noticia más reciente)...

en resumidas cuentas necesito que aparezca en una tabla la noticia id=10,
en otra tabla la noticia id=9,
en otra tabla la noticia id=8 y
en otra la noticia id=7...

El asunto está que no quiero tener que cambiarle el id en los códigos de cada tabla de distribución, cada vez que actualizo el sitio... quiero que se haga solo, al actualizar la base de datos con nuevas noticias que tengan id's superiores cada vez...

quiero saber que debo colocar en los WHERE id=

sé que se podría hacer con order by DESC, pero no es la idea que tengo... ya que necesito un solo dato específico por cada tabla de distribución y no una lista de noticias...
  #2 (permalink)  
Antiguo 24/08/2010, 17:45
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 15 años, 3 meses
Puntos: 214
Respuesta: Cómo puedo elegir el 2° mayor, el 3° mayor ó el 4° mayor en una consulta s

Hola
bueno, y cual es la bd??? asumo que es mysql, pregunto entonces, con LIMIT has intentado???
si la respuesta es TRUE o no quiero usar eso, entonces como ya tienes el id más reciente, pues simplemente pon ese resultado en una variable y en la siguiente tabla recibe ese dato y asignale a esa misma variable el valor actual menos uno (una resta pues!) y asi sucesivamente,
soluciona alguna de las sugerencias lo que pretendes?
espero que si
saludos
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com
  #3 (permalink)  
Antiguo 24/08/2010, 19:05
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Cómo puedo elegir el 2° mayor, el 3° mayor ó el 4° mayor en una consulta s

Francamente mucho no se entiende tu problema:
- Si las PK de la tabla son numéricas y autoincrementales, simplemente con ordenarlas de forma descendente tendrías lo que quieres.
- Si tu problema es que quieres numerarlas en forma ascendente, pero ordenarlas en modo descendente, lo único que debes hacer es usar variables de usuario dentro del SQL (ver FAQs)
Si no es ni una cosa ni la otra, te sugiero que muestres un ejemplo, porque entonces no queda claro.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #4 (permalink)  
Antiguo 24/08/2010, 19:58
 
Fecha de Ingreso: diciembre-2009
Mensajes: 24
Antigüedad: 15 años
Puntos: 0
Respuesta: Cómo puedo elegir el 2° mayor, el 3° mayor ó el 4° mayor en una consulta s

en realidad estoy empezando en esto de sql... el tema es que podría poner una lista descendente, pero necesito que cada dato aparezca en tablas de distribución distintas dentro de mi archivo php...

La respuesta de mortiprogramador me parece más acertada a lo que busco pues igual pensé en algo como LIMIT y -1... pero agradecería si pudieras explicar un poco más por favor...

Esta es mi consulta sql... lo hice con los id de las noticias que tengo, esta es sólo una consulta que corresponde al id 10 y va en una tabla de distribución propia... agradecería que pudieras explicarme donde insertar el LIMIT y donde hacer las restas...

<?php
include("conectar.php");
$noticias = mysql_query("SELECT id, noticia FROM noticias WHERE id=10");
$noticia1 = mysql_query("SELECT id, noticia FROM noticias WHERE id=10");
if($row_not = mysql_fetch_row($noticias)){
while ($row = mysql_fetch_row($noticia1))

{echo "<p class='subtitulo'>$row[1]</p>";}}?></td>

<td width="60" align="right" valign="middle" class="subtitulo">?>
  #5 (permalink)  
Antiguo 24/08/2010, 22:00
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 15 años, 3 meses
Puntos: 214
Respuesta: Cómo puedo elegir el 2° mayor, el 3° mayor ó el 4° mayor en una consulta s

Cita:
Iniciado por heart_rocker Ver Mensaje
en realidad estoy empezando en esto de sql... el tema es que podría poner una lista descendente, pero necesito que cada dato aparezca en tablas de distribución distintas dentro de mi archivo php...

La respuesta de mortiprogramador me parece más acertada a lo que busco pues igual pensé en algo como LIMIT y -1... pero agradecería si pudieras explicar un poco más por favor...

Esta es mi consulta sql... lo hice con los id de las noticias que tengo, esta es sólo una consulta que corresponde al id 10 y va en una tabla de distribución propia... agradecería que pudieras explicarme donde insertar el LIMIT y donde hacer las restas...

<?php
include("conectar.php");
$noticias = mysql_query("SELECT id, noticia FROM noticias WHERE id=10");
$noticia1 = mysql_query("SELECT id, noticia FROM noticias WHERE id=10");
if($row_not = mysql_fetch_row($noticias)){
while ($row = mysql_fetch_row($noticia1))

{echo "<p class='subtitulo'>$row[1]</p>";}}?></td>

<td width="60" align="right" valign="middle" class="subtitulo">?>
saludos
bueno, me confunde un poco lo que quieres lograr, voy a tratar de explicar lo que yo creo que quieres lograr

Tengo una tabla noticias donde tengo n registros, pero quiero que cada uno se muestre en una tabla distinta

así pues, usaría alguna de estas dos soluciones:

0.
Código MySQL:
Ver original
  1. "SELECT id, noticia FROM noticias LIMIT 0,5 ORDER BY id DESC"

y luego en el php, haria UNA sola consulta con este query, y haria
UN solo ciclo while y cada vez que se cumpla (es decir, tiene datos)
dibujaria una tabla completa

1.

Código MySQL:
Ver original
  1. "SELECT max(id) as mayor FROM noticias"

lo cual traería 10 (actualmente)

y como es solo un resultado, simplemente asigno el id a una variable php,
por ej $max_id = $row['mayor'];

y luego empiezo a hacer consultas individuales, empezando por $max_id (es decir, 10) y dibujo una tabla, y luego resto 1 unidad a $max_id (quedando en 9) y hago el mismo proceso anterior, algo así

Código PHP:
Ver original
  1. $res = mysql_query("SELECT max(id) as mayor FROM noticias");
  2. $resu = mysql_fetch_row($res);
  3. $max_id = $resu['mayor'];
  4.  
  5. $mayor1 = mysql_query("SELECT campos from tabla WHERE id =".$max_id);
  6. //while
  7. $max_id--;//resto 1
  8. //repito
  9. $mayor2 = mysql_query("SELECT campos from tabla WHERE id =".$max_id);
  10. //while
  11. $max_id--;//resto 1
  12. //y asi sucesivamente

aunque de las dos, me parece mejor la primera opción (0)

bueno, ahora si espero haya aclarado un poco más
saludos
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com
  #6 (permalink)  
Antiguo 25/08/2010, 10:45
 
Fecha de Ingreso: diciembre-2009
Mensajes: 24
Antigüedad: 15 años
Puntos: 0
Respuesta: Cómo puedo elegir el 2° mayor, el 3° mayor ó el 4° mayor en una consulta s

muchas gracias mortiprogramador... lo intentaré de esa forma...
en todo caso luego de leer tu respuesta de ayer intenté probar algo instintivo y me resultó... no sé si está bien pero funciona...

Cuando selecciono pongo esto... (id mayor)

Código PHP:
Ver original
  1. "SELECT id, noticia FROM noticias ORDER BY id DESC LIMIT 1"

Luego en otra tabla puse esto para el segundo mayor...

Código PHP:
Ver original
  1. "SELECT id, noticia FROM noticias ORDER BY id DESC LIMIT 1,1"

Para el tercer mayor puse...

Código PHP:
Ver original
  1. "SELECT id, noticia FROM noticias ORDER BY id DESC LIMIT 2,1"

y para el cuarto fue esto...

Código PHP:
Ver original
  1. "SELECT id, noticia FROM noticias ORDER BY id DESC LIMIT 3,1"

Resultó sencillo y funcionó aunque no sé si estará correcto el planteamiento, pero aquí está el resultado y lo probé agregando una noticia nueva y se actualizó correctamente....

http://www.mmddpitrufquen.cl/inicio.php"

Última edición por heart_rocker; 25/08/2010 a las 10:56
  #7 (permalink)  
Antiguo 25/08/2010, 13:51
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 15 años, 3 meses
Puntos: 214
Respuesta: Cómo puedo elegir el 2° mayor, el 3° mayor ó el 4° mayor en una consulta s

Hola
en efecto, como lo tienes es otra buena solución,
estas en la IX región? si es esa? yo hace mucho que
sabia algo de tu país, pero ya no recuerdo bien...
saludos
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com

Etiquetas: consulta, mayor, sql
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 14:50.