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

Criterio al agrupar

Estas en el tema de Criterio al agrupar en el foro de Mysql en Foros del Web. Con esta tabla llamada TEST id....................idDoc.......NombreArchivo... ....................................... Fecha 30.................... 29 ........ R_RED_CANAL_05_04.pdf........................ 2004-05-31 11:03:32 268.................. 29........ R_GNR_RED_30_01_04.pdf...................... 2004-01-30 16:59:48 287.................. 29........ R_DRV_RED_27_02_04.pdf...................... 2004-02-27 10:59:04 288.................. ...
  #1 (permalink)  
Antiguo 28/09/2011, 10:12
 
Fecha de Ingreso: octubre-2009
Mensajes: 223
Antigüedad: 14 años, 5 meses
Puntos: 2
Criterio al agrupar

Con esta tabla llamada TEST

id....................idDoc.......NombreArchivo... ....................................... Fecha
30.................... 29 ........ R_RED_CANAL_05_04.pdf........................ 2004-05-31 11:03:32
268.................. 29........ R_GNR_RED_30_01_04.pdf...................... 2004-01-30 16:59:48
287.................. 29........ R_DRV_RED_27_02_04.pdf...................... 2004-02-27 10:59:04
288.................. 29........ R_RED_CANAL_31_03_04.pdf.................. 2004-03-31 11:00:14
289.................. 29........ R_RED_CANAL_30_04_04.pdf ................ 2004-04-30 11:00:37

Si hago esta consulta:
Código SQL:
Ver original
  1. SELECT * FROM TEST GROUP BY idDoc
id idDoc NombreArchivo Fecha
30 29 R_RED_CANAL_05_04.pdf 2004-05-31 11:03:32

pero yo quiero que ademas de agrupar pod idDoc me aparezca el nombre del fichero del mayor id, es decir, R_RED_CANAL_30_04_04.pdf

He probado:

- Hacer un order antes del group no obedece

- Hacer un "
Código SQL:
Ver original
  1. ... WHERE id=(SELECT MAX(id) FROM TEST T2 WHERE id=XX)
" y no se porque sustituir las XX

- Hacer un "
Código SQL:
Ver original
  1. SELECT MAX(id), fecha FROM TEST GROUP BY idDoc
" el id aparece el maximo pero la fecha no es la de su registro


Como se deberia de hacer??

Gracias anticipadas

Última edición por gspablo; 28/09/2011 a las 10:23
  #2 (permalink)  
Antiguo 28/09/2011, 12:28
Avatar de Rodrhigo  
Fecha de Ingreso: septiembre-2011
Ubicación: Temuco-Valdivia-Osorno
Mensajes: 254
Antigüedad: 12 años, 6 meses
Puntos: 48
Respuesta: Criterio al agrupar

esto?
SELECT * FROM TEST GROUP BY idDoc order by id DESC
  #3 (permalink)  
Antiguo 28/09/2011, 12:59
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 2 meses
Puntos: 447
Respuesta: Criterio al agrupar

Hola gspablo...

Si entendí bien cuál es tu problema, esto debería funcionar:

Código MySQL:
Ver original
  1. mysql> CREATE TABLE TuTabla (id INT, idDoc INT,
  2.     -> NombreArchivo VARCHAR(40), fecha DATETIME);
  3. Query OK, 0 rows affected (0.10 sec)
  4.  
  5. mysql> INSERT INTO TuTabla VALUES
  6.     -> (30,29,'R_RED_CANAL_05_04.pdf','2004-05-31 11:03:32'),
  7.     -> (268,29,'R_GNR_RED_30_01_04.pdf','2004-01-30 16:59:48'),
  8.     -> (287,29,'R_DRV_RED_27_02_04.pdf','2004-02-27 10:59:04'),
  9.     -> (288,29,'R_RED_CANAL_31_03_04.pdf','2004-03-31 11:00:14'),
  10.     -> (289,29,'R_RED_CANAL_30_04_04.pdf','2004-04-30 11:00:37');
  11. Query OK, 5 rows affected (0.05 sec)
  12. Records: 5  Duplicates: 0  Warnings: 0
  13.  
  14. mysql> SELECT * FROM TuTabla;
  15. +------+-------+--------------------------+---------------------+
  16. | id   | idDoc | NombreArchivo            | fecha               |
  17. +------+-------+--------------------------+---------------------+
  18. |   30 |    29 | R_RED_CANAL_05_04.pdf    | 2004-05-31 11:03:32 |
  19. |  268 |    29 | R_GNR_RED_30_01_04.pdf   | 2004-01-30 16:59:48 |
  20. |  287 |    29 | R_DRV_RED_27_02_04.pdf   | 2004-02-27 10:59:04 |
  21. |  288 |    29 | R_RED_CANAL_31_03_04.pdf | 2004-03-31 11:00:14 |
  22. |  289 |    29 | R_RED_CANAL_30_04_04.pdf | 2004-04-30 11:00:37 |
  23. +------+-------+--------------------------+---------------------+
  24. 5 rows in set (0.00 sec)
  25.  
  26. mysql> SELECT T1.* FROM TuTabla T1 INNER JOIN
  27.     -> (
  28.     -> SELECT idDoc, MAX(id) max_id FROM TuTabla GROUP BY idDoc
  29.     -> ) T2 ON T1.idDoc = T2.idDoc AND T1.id = T2.max_id;
  30. +------+-------+--------------------------+---------------------+
  31. | id   | idDoc | NombreArchivo            | fecha               |
  32. +------+-------+--------------------------+---------------------+
  33. |  289 |    29 | R_RED_CANAL_30_04_04.pdf | 2004-04-30 11:00:37 |
  34. +------+-------+--------------------------+---------------------+
  35. 1 row in set (0.00 sec)


Dale un vistazo al script para ver si es lo que necesitas.

Saludos
Leo.

Etiquetas: agrupar, select, tabla
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 07:30.