Ver Mensaje Individual
  #4 (permalink)  
Antiguo 01/09/2010, 02:21
quimfv
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 10 meses
Puntos: 574
Respuesta: Ayuda con consulta en Access

Crea una counsulta nueva, cierras la ventana donde se eligen las tablas y abres la vista SQL (primer icono de la izquierda), aparecera una ventana blanca con
SELECT; ahi tienes que pegar el codigo.

Código SQL:
Ver original
  1. SELECT Ingresos.numsoc,
  2.    socios.nombre,
  3.    Ingresos.fecha AS Fecha,
  4.    SUM(Ingresos.importe) AS TotalPagado,
  5.    COUNT(*) AS numeroCuotas,
  6.    Ingresos.concepto
  7. FROM (Ingresos INNER JOIN socios
  8.    ON Ingresos.numsoc = socios.numsoc)
  9. INNER JOIN (SELECT Ingresos.numsoc,
  10.                        MAX(Ingresos.fecha) AS mfecha
  11.                      FROM Ingresos
  12.                      WHERE (((Ingresos.concepto)="Q"))
  13.                      GROUP BY Ingresos.numsoc)  AS sbc
  14.       ON (Ingresos.fecha = sbc.mfecha)
  15.             AND (Ingresos.numsoc = sbc.numsoc)
  16. GROUP BY Ingresos.numsoc, Ingresos.fecha
  17.    socios.nombre,
  18.    Ingresos.concepto
  19. HAVING (((Ingresos.concepto)="Q"));

Una vez pegado debes modificarlo para que se ajuste a tu base de datos, debes cambiar los nombres de las tablas y de los campos:

Ingresos --> nombre de tu tabla ingresos
socios --> nombre de tu tabla de socios

numsoc --> nombre de tu campo con el numero de socio
fecha --> ...
...

Ingresos.concepto)="Q" --> aqui debe ir tu restricción para obtener cuotas cambia Q por el contenido que deba tener el campo concepto.

Puedes agregar campos (apellido...) a la consulta principal pero recuerda agregarlos tanto en la primera parte, despues del primer select, como en el ultimo group by, "nombretabla.nombrecampo," el ultimo no debe llevar la coma. No añadas anada en la subconsulta, (SELECT ...) AS sbc.


Código SQL:
Ver original
  1. SELECT Ingresos.numsoc,
  2.    socios.nombre,
  3.    Ingresos.fecha AS Fecha,
  4.    SUM(Ingresos.importe) AS TotalPagado,   '<-- lista de campos a mostrar'
  5.    COUNT(*) AS numeroCuotas,
  6.    Ingresos.concepto
  7. FROM (Ingresos INNER JOIN socios
  8.    ON Ingresos.numsoc = socios.numsoc)    '<-- combinación de tablas'
  9. INNER JOIN (SELECT Ingresos.numsoc,
  10.                        MAX(Ingresos.fecha) AS mfecha
  11.                      FROM Ingresos              '<-- subconsulta que elige la '
  12.                      WHERE (((Ingresos.concepto)="Q"))   'fecha mas alta para cada'
  13.                      GROUP BY Ingresos.numsoc)  AS sbc   'socio'
  14.       ON (Ingresos.fecha = sbc.mfecha)        '<-- combinacion de las tablas con'
  15.             AND (Ingresos.numsoc = sbc.numsoc)   'la sub consulta'
  16. GROUP BY Ingresos.numsoc,
  17.    Ingresos.fecha,
  18.    socios.nombre,                          ' <-- agrupacion de registros'
  19.    Ingresos.concepto
  20. HAVING (((Ingresos.concepto)="Q"));   '<-- restrición de cuotas'

No he comentado la subconsulta pero sigue una estructura similar a la consulta principal.

Una vez hecho esto te debe dar lo que buscas...

Quim

Última edición por quimfv; 01/09/2010 a las 04:02