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

Obtener los ultimos 5 valores de una tabla según un campo especifico

Estas en el tema de Obtener los ultimos 5 valores de una tabla según un campo especifico en el foro de Mysql en Foros del Web. Hola! yo otra vez preguntando, se que esta pregunta parece mas de MySQL que PHP, pero creo que no podré solucionarlo solo con MySQL... Tengo ...
  #1 (permalink)  
Antiguo 21/10/2011, 08:04
Avatar de stramin  
Fecha de Ingreso: marzo-2008
Ubicación: Cubil felino
Mensajes: 1.652
Antigüedad: 16 años, 1 mes
Puntos: 336
Obtener los ultimos 5 valores de una tabla según un campo especifico

Hola!

yo otra vez preguntando, se que esta pregunta parece mas de MySQL que PHP, pero creo que no podré solucionarlo solo con MySQL...

Tengo una tabla con registros secuenciales que en resumen es algo así:

Código MySQL:
Ver original
  1. id temp pos
  2. 1  25   1
  3. 2  28   2
  4. 3  26   3
  5. 4  27   1
  6. 5  26   2
  7. 6  24   3
  8. 7  26   2
  9. 8  27   1
  10. 9  28   2
  11. ...

Donde id es el identificador único con autoincremento.
temp es la temperatura de un lugar
pos es la posición donde se registro esa temperatura

y debo mostrar solo la última temperatura de cada posición, o sea que debería mostrar solo estos 3:

Código MySQL:
Ver original
  1. id temp pos
  2. 6  24   3
  3. 8  27   1
  4. 9  28   2
  5. ...

pensaba hacer una sentencia algo así:
SELECT * FROM tabla GROUP BY pos ORDER BY id DESC

pero me devuelve solo los primeros valores de cada uno...

así que supongo que lo mejor es guardarlo en variables y ordenarlos, pero no logro hacerlo, parece simple pero no se me ocurre XD

Gracias por su ayuda!
__________________
El objetivo de este foro es orientar al usuario como un favor y no como una obligación.

Yo soy de los que dan puntos por aporte :D
  #2 (permalink)  
Antiguo 21/10/2011, 08:17
Avatar de Patriarka  
Fecha de Ingreso: enero-2011
Ubicación: Moreno, Buenos Aires, Argentina
Mensajes: 2.851
Antigüedad: 13 años, 3 meses
Puntos: 288
Respuesta: Obtener los ultimos 5 valores de una tabla según un campo especifico

y a esto por que seleccionas el maximo id de cada POS?

SELECT *, MAX(id) AS maximo FROM tabla GROUP BY pos ORDER BY maximo DESC

o algo asi
  #3 (permalink)  
Antiguo 21/10/2011, 10:00
Avatar de stramin  
Fecha de Ingreso: marzo-2008
Ubicación: Cubil felino
Mensajes: 1.652
Antigüedad: 16 años, 1 mes
Puntos: 336
Respuesta: Obtener los ultimos 5 valores de una tabla según un campo especifico

Gracias por la ayuda Patriarka, pero lamentablemente no funcionó, me salió esto:

Código MySQL:
Ver original
  1. id temp pos maximo
  2. 1  25   1   8
  3. 2  28   2   9
  4. 3  26   3   3

O sea me entrega el maximo id pero la temperatura es la de los primeros registros.

De todos modos estoy intentando guardar los resultados en un arreglo y operarlos con PHP, ya que veo muy dificil hacerlo solo con MySQL.

Esto es lo que llevo:

$cons=mysql_query("SELECT DISTINCT(pos) FROM tabla");

De esta manera obtengo todas las posiciones y luego por cada posicion busco el mayor y hago una nueva consulta

while($MFR=mysql_fetch_array($cons)){
$cons2=mysql_query("SELECT * FROM tabla ORDER BY id DESC LIMIT 1");
}

bueno al menos esa es la idea, creo que va saliendo bien :)
__________________
El objetivo de este foro es orientar al usuario como un favor y no como una obligación.

Yo soy de los que dan puntos por aporte :D
  #4 (permalink)  
Antiguo 21/10/2011, 10:55
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 12 años, 9 meses
Puntos: 793
Respuesta: Obtener los ultimos 5 valores de una tabla según un campo especifico

Bueno mis conocimientos de SQL son pocos, pero se me ocurrió algo así. Mira a ver si te sirve, por lo menos hace lo que pides.

Código SQL:
Ver original
  1. SELECT * FROM tabla WHERE id IN (SELECT MAX(id) FROM tabla GROUP BY pos)

Saludos.
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP
  #5 (permalink)  
Antiguo 24/10/2011, 08:52
Avatar de stramin  
Fecha de Ingreso: marzo-2008
Ubicación: Cubil felino
Mensajes: 1.652
Antigüedad: 16 años, 1 mes
Puntos: 336
Respuesta: Obtener los ultimos 5 valores de una tabla según un campo especifico

Gracias, lo probé pero no termina de cargar nunca, como si fuese un loop infinito, hasta que la página da error por tiempo excedido...

al final lo hice con whiles anidados :)
__________________
El objetivo de este foro es orientar al usuario como un favor y no como una obligación.

Yo soy de los que dan puntos por aporte :D
  #6 (permalink)  
Antiguo 24/10/2011, 09:06
Avatar de h2swider  
Fecha de Ingreso: julio-2007
Ubicación: Ciudad de Buenos Aires
Mensajes: 932
Antigüedad: 16 años, 9 meses
Puntos: 194
Respuesta: Obtener los ultimos 5 valores de una tabla según un campo especifico

La solucione optima es con la siguiente consulta.

Código SQL:
Ver original
  1. SELECT id, MAX(temp) AS maxima_temperatura, pos FROM tabla GROUP BY pos ORDER BY pos ASC

Aun asi puedes hacerlo con whiles anidados, pero no te lo recomiendo.
__________________
Codifica siempre como si la persona que finalmente mantedra tu código sea un psicópata violento que sabe donde vives
  #7 (permalink)  
Antiguo 24/10/2011, 09:54
Avatar de stramin  
Fecha de Ingreso: marzo-2008
Ubicación: Cubil felino
Mensajes: 1.652
Antigüedad: 16 años, 1 mes
Puntos: 336
Respuesta: Obtener los ultimos 5 valores de una tabla según un campo especifico

gracias h2swider, esta realmente cerca, solo que en temperatura no me muestra las ultimas registradas si no la máxima de todos los tiempo :(

de todos modos les doy karma a ambos por el esfuerzo :)
__________________
El objetivo de este foro es orientar al usuario como un favor y no como una obligación.

Yo soy de los que dan puntos por aporte :D
  #8 (permalink)  
Antiguo 24/10/2011, 11:04
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 12 años, 9 meses
Puntos: 793
Respuesta: Obtener los ultimos 5 valores de una tabla según un campo especifico

Bueno también puedes hacer algo así:

Código MySQL:
Ver original
  1. SELECT t1.id, t1.pos, t1.temp
  2. FROM tabla t1
  3. LEFT JOIN tabla t2 ON t1.pos = t2.pos AND t1.id < t2.id
  4. WHERE t2.id IS NULL

Reemplaza tabla por tu tabla y funciona, pero no sé si sea lo mejor.

Veo que ya lo movieron de PHP a MySQL, bueno dejo esta última para que los expertos en el tema terminen de ayudarte.

Saludos.
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP

Etiquetas: especifico, registro, tabla, variables, ultimo, campos
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 23:07.