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

SELECT con max en clausul WHERE

Estas en el tema de SELECT con max en clausul WHERE en el foro de Bases de Datos General en Foros del Web. Hola, tengo una tabla donde uno de los campos pertenece al tipo de registro. El mismo es numerico y puede tomar los valores 0,1,2,3,4,5. Para ...
  #1 (permalink)  
Antiguo 30/05/2011, 12:45
Ktulu
Invitado
 
Mensajes: n/a
Puntos:
Pregunta SELECT con max en clausul WHERE

Hola, tengo una tabla donde uno de los campos pertenece al tipo de registro. El mismo es numerico y puede tomar los valores 0,1,2,3,4,5.
Para que quede mas claro mi registro sería algo como:

ID | DESCRIPCION |TIPO

Necesito seleccionar todos los registros de la tabla excluyendo aquellos registros de tipo 1,2,3,4,5 cuyo ID sea el mayor.
Dicho de otro modo, necesito capturar todos los registros de tipo 0 + todos los registros de los otros tipos excluyendo el mayor de cada uno.

Espero puedan ayudarme, muchas gracias

Nota: utilizo MySQL
  #2 (permalink)  
Antiguo 30/05/2011, 13:48
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 meses
Puntos: 447
Respuesta: SELECT con max en clausul WHERE

Hola Ktulu:

No sé si entendí bien lo que quieres hacer, tal vez si hubieras incluido algunos datos de ejemplo podría verse de manera más clara lo que necesitas, pero a ver si más o menos esto es lo que necesitas:

Código MySQL:
Ver original
  1. mysql> create table TuTabla (ID int, DESCRIPCION varchar(10), TIPO int);
  2. Query OK, 0 rows affected (0.09 sec)
  3.  
  4. mysql> insert into TuTabla values
  5.     -> (1, '0.1', 0),(2, '0.2', 0),(3, '1.1', 1),(4, '1.2', 1),(5, '2.1', 2),
  6.     -> (6, '2.2', 2),(7, '3.1', 3),(8, '3.2', 3),(9, '4.1', 4),(10, '4.2', 4),
  7.     -> (11, '5.1', 5),(12, '5.2', 5);
  8. Query OK, 12 rows affected (0.03 sec)
  9. Records: 12  Duplicates: 0  Warnings: 0
  10.  
  11. mysql> select * from TuTabla;
  12. +------+-------------+------+
  13. | ID   | DESCRIPCION | TIPO |
  14. +------+-------------+------+
  15. |    1 | 0.1         |    0 |
  16. |    2 | 0.2         |    0 |
  17. |    3 | 1.1         |    1 |
  18. |    4 | 1.2         |    1 |
  19. |    5 | 2.1         |    2 |
  20. |    6 | 2.2         |    2 |
  21. |    7 | 3.1         |    3 |
  22. |    8 | 3.2         |    3 |
  23. |    9 | 4.1         |    4 |
  24. |   10 | 4.2         |    4 |
  25. |   11 | 5.1         |    5 |
  26. |   12 | 5.2         |    5 |
  27. +------+-------------+------+
  28. 12 rows in set (0.00 sec)
  29.  
  30. mysql> select * from TuTabla where id not in (
  31.     -> select max(id) id from TuTabla where tipo != 0 group by TIPO
  32.     -> );
  33. +------+-------------+------+
  34. | ID   | DESCRIPCION | TIPO |
  35. +------+-------------+------+
  36. |    1 | 0.1         |    0 |
  37. |    2 | 0.2         |    0 |
  38. |    3 | 1.1         |    1 |
  39. |    5 | 2.1         |    2 |
  40. |    7 | 3.1         |    3 |
  41. |    9 | 4.1         |    4 |
  42. |   11 | 5.1         |    5 |
  43. +------+-------------+------+
  44. 7 rows in set (0.00 sec)

Si observas para cada tipo (0 a 5) hay dos registros, en la salida aparecen los dos registros para el tipo 0 y de los tipos 1 a 5 se excluyen los que tienen el id máximo. Según lo que entendí esto es lo que necesitas, pero si no es así, te pido que nos pongas algunos datos de ejemplo, para poder hacer pruebas.

Saludos
Leo.

Etiquetas: max, mayor, select, bases-de-datos
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 16:05.