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

Consulta de registros agrupados

Estas en el tema de Consulta de registros agrupados en el foro de Mysql en Foros del Web. Hola: Tengo una tabla como la siguiente id_de_apunte (numerico, autoincrementable) id_de_usuario (numerico, corresponde con una tabla de usuarios) id_de_documento (numérico, corresponde con una tabla de ...
  #1 (permalink)  
Antiguo 30/07/2014, 05:49
 
Fecha de Ingreso: mayo-2012
Ubicación: Madrid
Mensajes: 7
Antigüedad: 11 años, 10 meses
Puntos: 0
Consulta de registros agrupados

Hola:
Tengo una tabla como la siguiente
id_de_apunte (numerico, autoincrementable)
id_de_usuario (numerico, corresponde con una tabla de usuarios)
id_de_documento (numérico, corresponde con una tabla de documentos)
documento_aprobado (de tipo enum, con los valores S, N)
fecha_de_documento (de tipo date)

Hay diversos usuarios, y cada uno puede tener varios registros, con diversos ids de documento.

Necesito sacar el último registro de cada usuario y documento. Así, si hay diez registros del usuario 1000, de los cuales tres son del documento 100, otros tres del documento 200 y cuatro del documento 300, necesito el ultimo registro del usuario 1000 con el documento 100, el último del mismo usuario con el documento 200 y el último del mismo usuario con el documento 300.

El problema es que la tabla tiene más de 150000 registros, y hay que seleccionar el último de cada usuario y documento, que tenga S en documento_aprobado.

  #2 (permalink)  
Antiguo 30/07/2014, 07:11
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Consulta de registros agrupados

Por partes

Código MySQL:
Ver original
  1. SELECT id_de_usuario,
  2.              id_de_documento,
  3.              MAX(id_de_apunte) idUltimoRegistro
  4. FROM tuTabla
  5. WHERE documento_aprobado="S"
  6. GROUP BY id_de_usuario,
  7.              id_de_documento;

ahí tendriamos el id del ultimo registro de cada usuario y documento aprobado.

Solo faltaria la fecha

Código MySQL:
Ver original
  1. SELECT * FROM tuTabla t
  2.      INNER JOIN (SELECT id_de_usuario,
  3.                                       id_de_documento,
  4.                                       MAX(id_de_apunte) idUltimoRegistro
  5.                           FROM tuTabla
  6.                           WHERE documento_aprobado="S"
  7.                           GROUP BY id_de_usuario,
  8.                                id_de_documento) Sbc
  9.       ON t.id_de_apunte=Sbc.idUltimoRegistro

Todo el registro
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.

Etiquetas: seleccion
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 05:02.