Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 17
  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2012
    Messaggi
    15

    Query con estrazione data più recente ( ultimo record ) da altra tabella

    Buongiorno a tutti,
    Sto realizzando un programma in Access ricco di queries, ma su questa non mi riesce proprio di andare avanti.

    Devo realizzare una query per trovare i morosi nei pagamenti della quota associativa dell'anno in corso. Ovviamente risulterà moroso chiunque non ha pagato dal primo gennaio dell'anno in corso. Una volta inserito il pagamento nella tabella, non dovrà risultare più moroso.

    Le tabelle che vengono utilizzate in questa query sono due: aziende (che contiene tutti i dati dell'aziende che vanno mostrati nel risultato, come id, nome azienda, numero telefono ecc.) e pagamenti, che contiene una lista di ogni pagamento fatto da quell'azienda nel corso degli anni.

    Tra i risultati deve anche comparire per ogni azienda che è in mora da quanto è che non paga la quota associativa, che tradotto in parole povere per ogni record deve risultare l'ultimo pagamento effettuato da quell'azienda, che è contenuto nella tabella pagamenti.

    Ho provato a fare due queries, ma entrambe non funzionano.

    Infatti, una mi fa vedere i vari record con la data dell'ultimo pagamento uguale per tutti

    SELECT Aziende.[ID], Aziende.[NomeAzienda], Aziende.[Cognome amm], Aziende.[Nome amm], Aziende.[Attività], Aziende.[Numero Tel], Aziende.[Email], (SELECT Last(pagamenti.[Datapagam]) FROM Pagamenti INNER JOIN aziende ON pagamenti.Azienda = Aziende.ID WHERE Aziende.[ID] NOT IN (SELECT Aziende.[ID] FROM Aziende INNER JOIN pagamenti ON Aziende.ID = pagamenti.Azienda WHERE Year(Pagamenti.[datapagam])=year(now()))) AS UltimoPag
    FROM Aziende
    WHERE Aziende.[ID] NOT IN (SELECT Aziende.[ID] FROM Aziende INNER JOIN pagamenti ON Aziende.ID = pagamenti.Azienda WHERE Year(Pagamenti.[datapagam])=year(now()))
    AND aziende.[disdetto/radiato] = false;

    Mentre la seconda mi fa vedere solo un record che ha la data dell'ultimo pagamento più recente

    SELECT Aziende.[ID], Aziende.[NomeAzienda], Aziende.[Cognome amm], Aziende.[Nome amm], Aziende.[Attività], Aziende.[Numero Tel], Aziende.[Email], Pagamenti.DataPagam
    FROM Aziende INNER JOIN pagamenti ON Aziende.ID = pagamenti.Azienda
    WHERE Aziende.[ID] NOT IN (SELECT Aziende.[ID] FROM Aziende INNER JOIN pagamenti ON Aziende.ID = pagamenti.Azienda WHERE Year(Pagamenti.[datapagam])=year(now()))
    AND Pagamenti.Datapagam = (SELECT MAX(pagamenti.[Datapagam]) FROM Pagamenti INNER JOIN aziende ON pagamenti.Azienda = Aziende.ID WHERE Aziende.[ID] NOT IN (SELECT Aziende.[ID] FROM Aziende INNER JOIN pagamenti ON Aziende.ID = pagamenti.Azienda WHERE Year(Pagamenti.[datapagam])=year(now())))
    AND aziende.[disdetto/radiato] = false;

    Ho scritto questo titolo perchè nel forum non ho trovato niente a riguardo, spero possa servire agli altri utenti in futuro!

    Grazie mille!

  2. #2
    ti semplificheresti di molto la vita inserendo nella tabella aziende una colonna UltimoPagamento, che puoi ottenere con Max(DataPagamento) - non Last() - per ogni IdAzienda.

    ovviamente UltimoPagamento va aggiornato ad ogni pagamento...

  3. #3
    Utente di HTML.it
    Registrato dal
    Aug 2012
    Messaggi
    15
    Quindi mi devo concentrare sulla seconda query che ho scritto sopra.

    Ma a cambiare da last a max è indifferente, mi mostra per ogni record la stessa data.

    Sono alle prime armi, scusami se non afferro alla prima..

  4. #4
    ma hai la possibilità di cambiare le tabelle? puoi aggiungere una colonna?

  5. #5
    Utente di HTML.it
    Registrato dal
    Aug 2012
    Messaggi
    15
    Certamente, ma come faccio a fare in modo che si aggiorni in automatico ogni volta che si aggiunge un nuovo pagamento?

  6. #6

  7. #7
    Utente di HTML.it
    Registrato dal
    Aug 2012
    Messaggi
    15
    Peccato che l'inserimento di un nuovo pagamento lo faccio su una maschera, perchè il programma lo sto facendo in Access 2010, quindi non saprei come inserire una query update..

  8. #8
    per queste cose specifiche di Access (maschere ecc.) c'è un forum apposito - vedi il regolamento

  9. #9
    Utente di HTML.it
    Registrato dal
    Aug 2012
    Messaggi
    15
    Lo so, ma quello che serviva a me era la query, ho sbagliato forum lo stesso?

  10. #10
    mire', ma se hai detto che la query NON la puoi fare...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.