Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    Access: Query di eliminazione record in base a data

    Salve a tutti,
    Mi sto imbattendo in questo problema e non riesco a trovare una soluzione.
    Ho la necessità di eliminare da una tabella tutti quei record che ne campo DATA hanno la data maggiore.

    Esempio:
    ID CODICE DATA PERCENT.
    1 01.201.4 01/12/2014 0,00%
    2 01.201.7 01/12/2014 0,00%
    3 01.001.1 01/12/2014 64,04%
    4 01.016.1 03/12/2014 65,81%
    5 01.016.3 03/12/2014 0,87%
    6 01.201.7 07/12/2014 0,00%
    7 01.001.1 07/12/2014 80,00%
    8 01.014.3 10/12/2014 92,70%
    9 01.182.1 10/12/2014 95,71%
    10 01.015.3 10/12/2014 99,57%
    11 01.016.1 10/12/2014 84,98%
    12 01.016.3 10/12/2014 0,00%
    13 01.111.3 31/12/2014 2,25%
    14 01.014.3 31/12/2014 93,82%
    15 01.021.3 01/01/2015 79,31%
    16 01.113.1 01/01/2015 96,43%

    dati da eliminare: record 15 e 16 perchè hanno la data maggiore.

    Grazie in anticipo a chi potrà o vorrà aiutarmi.
    Ciao Leonardo

  2. #2
    Utente di HTML.it L'avatar di nman
    Registrato dal
    Jan 2011
    residenza
    Milano
    Messaggi
    1,333
    Quote Originariamente inviata da leonardocarrani Visualizza il messaggio
    Ho la necessità di eliminare da una tabella tutti quei record che ne campo DATA hanno la data maggiore.
    Fai una query di eliminazione
    piu meno cosi:
    codice:
    DELETE *
    FROM Tab AS T
    WHERE T.Data=(SELECT Max(Tab.Data) FROM Tab;)
    ;
    Facci sapere

    .

  3. #3
    Grande...funziona perfettamente!
    Grazie mille.

  4. #4
    Potrei con una sola query di eliminazione fare la stessa cosa su più tabelle contemporaneamente?

  5. #5
    Utente di HTML.it L'avatar di nman
    Registrato dal
    Jan 2011
    residenza
    Milano
    Messaggi
    1,333
    Quote Originariamente inviata da leonardocarrani Visualizza il messaggio
    Potrei con una sola query di eliminazione fare la stessa cosa su più tabelle contemporaneamente?
    La classica query di eliminazione è quella che ti ho postato sopra.

    Se volessimo arrampicarci sui vetri si potrebbe tentare di mettere in JOIN più tabelle e poi lanciare la eliminazione
    ma la vedo estremamente brutta, lo sconsiglio


    invece se usi VBA lo puoi fare tranquillamente,
    ti crei tante query semplici e le lanci singolarmente
    codice:
    Public Sub ElimPiuTabelle()   
    
    ' dichiaro una variabile stringa
    Dim strSql As String
    
    ' creo una stringa che sia una qyery DELETE da Tab 1
    strSql = "DELETE * FROM Tab1 AS T WHERE T.Data=(SELECT Max(Tab1.Data) FROM Tab1;);"
    ' eseguo la prima query
    DBEngine(0)(0).Execute strSql
    
    ' Modifico la stringa per eliminare da un'altra tabella ( Tab 2 )
    strSql = "DELETE * FROM Tab2 AS T WHERE T.Data=(SELECT Max(Tab2.Data) FROM Tab2;);"
    ' eseguo la seconda query
    DBEngine(0)(0).Execute strSql
    
    ' Modifico la stringa per eliminare da un'altra tabella ( Tab 3 )
    strSql = "DELETE * FROM Tab3 AS T WHERE T.Data=(SELECT Max(Tab3.Data) FROM Tab3;);"
    ' eseguo la terza query
    DBEngine(0)(0).Execute strSql
    
    ' eccetera per tutte le tabelle
    End Sub

  6. #6
    Utente di HTML.it L'avatar di nman
    Registrato dal
    Jan 2011
    residenza
    Milano
    Messaggi
    1,333
    Quote Originariamente inviata da nman Visualizza il messaggio
    .... Se volessimo arrampicarci sui vetri si potrebbe tentare di mettere in JOIN più tabelle e poi lanciare la eliminazione
    ma la vedo estremamente brutta, lo sconsiglio ....
    Mi correggo,
    Solo con SQL Neanche arrampicandosi sui vetri potremmo eliminare contemporaneamente da 2 tabelle


    .

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 © 2025 vBulletin Solutions, Inc. All rights reserved.