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

select con Ultimo registro por grupo

Estas en el tema de select con Ultimo registro por grupo en el foro de Mysql en Foros del Web. Hola.. tengo la siquiente tabla @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código SQL: Ver original mysql > SELECT * FROM ingresos; + ----+-------+-------+ | id | turno | valor ...
  #1 (permalink)  
Antiguo 09/01/2012, 15:11
Avatar de omar1977  
Fecha de Ingreso: abril-2006
Mensajes: 178
Antigüedad: 18 años, 7 meses
Puntos: 4
select con Ultimo registro por grupo

Hola..
tengo la siquiente tabla
Código SQL:
Ver original
  1. mysql> SELECT * FROM ingresos;
  2. +----+-------+-------+
  3. | id | turno | valor |
  4. +----+-------+-------+
  5. |  1 | t1    |   100 |
  6. |  2 | t1    |    99 |
  7. |  3 | t1    |   100 |
  8. |  4 | t2    |    90 |
  9. |  5 | t1    |   120 |
  10. |  6 | t3    |   111 |
  11. |  7 | t3    |   107 |
  12. |  8 | t1    |    95 |
  13. |  9 | t2    |   120 |
  14. +----+-------+-------+
  15. 9 ROWS IN SET (0.00 sec)
lo que necesito es que me entrege solo el ultimo ingreso por grupo, en este caso el el ultimo ingreso por turno.
con un SELECT MAX(id), solo obtengo el maximo, con ORDER BY puedo obtener los ultimos pero no por grupo.........

es algo como GROUP BT turno ORDER BY DESC LIMIT 1, pero por turno.
el resultado seria
Código SQL:
Ver original
  1. +----+-------+-------+
  2. | id | turno | valor |
  3. +----+-------+-------+
  4. |  8 | t1    |    95 |
  5. |  9 | t2    |   120 |
  6. |  7 | t3    |   107 |
  7. +----+-------+-------+
si me ayudan un poco por favor......
gracias
__________________
no hay nadie que sea tan inutil, por ultimo sirve como mal ejemplo
  #2 (permalink)  
Antiguo 09/01/2012, 16:02
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 10 meses
Puntos: 447
Respuesta: select con Ultimo registro por grupo

Hola omar1977:

Creo que te equivocaste con la salida, el valor máximo para el t1 no es 95, sino 120 (observa el registro 5), de igual forma, el valor máximo para el turno 3 no es 107, sino 111 (observa el registro 6).

Te recuerdo que la función MAX es una función de agrupación, por lo tanto se puede utilizar junto con la cláusula GROUP BY.

Código MySQL:
Ver original
  1. mysql> SELECT turno, MAX(valor) FROM ingresos GROUP BY turno;
  2. +-------+------------+
  3. | turno | MAX(valor) |
  4. +-------+------------+
  5. | t1    |        120 |
  6. | t2    |        120 |
  7. | t3    |        111 |
  8. +-------+------------+
  9. 3 rows in set (0.06 sec)

Esta consulta obtiene el máximo valor para cada turno, si esto no es lo que necesitas deberías explicarnos mejor cómo quieres seleccionar los valores.

Saludos
Leo.

Etiquetas: grupo, registro, select, sql, tabla, ultimo
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:35.