Record Duplicati

di il
8 risposte

Record Duplicati

Cari ragazzi, finalmente il mio database è in fase di ultimazione. Perciò ora vi chiedo un ultimo aiuto.

Tabella anagrafica con i seguenti campi
Nome, Cognome, email, telefono, città, provincia, corso, data_inserimento, check (flag di stato).

Ovviamente, come può succedere, nell'inserimento dei record (una volta a settimana a cascata via import Excel) può accadere che uno o più records siano dei doppioni già inseriti precedentemente. Perciò Vi chiedo un quesito.
Mettiamo in evidenza che dei record doppioni mi deve lasciare solo il più recente e con tra tutti, mentre gli altri verranno eliminati.

Vi chiederete: con quale criterio vuoi eliminare il record?

Bene, se nome e cognome sono uguali, ci potrebbero essere dei problemi (sai quanti omonimi esistono sulla faccia della terra?).
Il criterio deve essere sulla base di Nome, Cognome, telefono, città e provincia, con la clausola che a scegliere quale tenere e quale eliminare sarà la data di inserimento. Mi deve eliminare tutti i records UGUALI con i criteri detti in precedenza ma con data più lontana tra quelli uguali.

Nome Cognome telefono citta provincia data
Mario Rossi 123 Milano Milano 12/11/2013
Mario Rossi 123 Milano Milano 15/02/2011
Mario Rossi 123 Milano Milano 07/01/2019
Mario Rossi 123 Milano Milano 12/11/2015

Mi dovrà eliminare

Mario Rossi 123 Milano Milano 12/11/2013
Mario Rossi 123 Milano Milano 15/02/2011
Mario Rossi 123 Milano Milano 12/11/2015

e tenere

Mario Rossi 123 Milano Milano 07/01/2019

Spero sia stato abbastanza chiaro. Questa "Query" sarà da applicare su un tasto nel menu principale sotto il nome di "Pulisci Database", ma quello è relativo.

8 Risposte

  • Re: Record Duplicati

    Ma tu non hai nessuna ChiavePrimaria...? Sicuro sia la cosa giusta...?

    I dati che importi che Certezza di compilazione hanno...?
    Esempio:
    
    "Mario Rossi" <> "Mario  Rossi" <> "Mario Rossi "
    La differenza sta nel numero di SPACE...

    La soluzione che potresti adottare è creare una Query con un solo Campo Calcolato ottenuto per CONCATENAZIONE dei campi che vuoi controllare...
    A quel punto risulta funzionale quanto meno VARIABILI nel testo possono essere introdotte....
  • Re: Record Duplicati

    @Alex ha scritto:


    Ma tu non hai nessuna ChiavePrimaria...? Sicuro sia la cosa giusta...?

    I dati che importi che Certezza di compilazione hanno...?
    Esempio:
    
    "Mario Rossi" <> "Mario  Rossi" <> "Mario Rossi "
    La differenza sta nel numero di SPACE...

    La soluzione che potresti adottare è creare una Query con un solo Campo Calcolato ottenuto per CONCATENAZIONE dei campi che vuoi controllare...
    A quel punto risulta funzionale quanto meno VARIABILI nel testo possono essere introdotte....
    Perdonami l'id l'ho dato per scontato.
    Ma non ho capito ciò che vuoi dire.

    Comunque i campi prima di inserirli li controllo tutti e li modifico da Excel quindi errori di questo genere non ce ne sono al 100%

    Quindi che codice dovrei usare?
  • Re: Record Duplicati

    Non sono sicuro di dare una risposta valida, ma prova:
    1. Query dove importi i 6 campi che hai detto
    2. Clicca in alto su Totali, quindi metti Raggruppamento sui 5 campi
    3. Sul campo Data metti Max
    4. In questo modo (forse) "prelevi" i record che ti interessano. Se è vero, già questo dovrebbe essere un dato interessante. Chiamiamola Query1.
    5. Per eliminare gli altri record, fai una "query ricerca dati non corripondenti" su tutti i 6 campi, tra Anagrafica e Query1, la chiamerai Query2.
    6. Trasforma Query2 in "query di eliminazione". Poi la esegui una volta.
  • Re: Record Duplicati

    Ho trovato un'altra soluzione che per il momento non mi sembra dare eventuali problemi, ho fatto tutte le prove del e il risultato che mi da è sempre quello che voglio.

    DELETE *
    FROM Anagrafica
    WHERE (SELECT count(*) FROM Anagrafica AS A 
    WHERE (A.Nome & A.Cognome & A.Telefono & A.Data 
      = Anagrafica.Nome & Anagrafica.Cognome & Anagrafica.Telefono & A.Data )
    AND (Anagrafica.Data < A.Data)
      ORDER BY Anagrafica.Data DESC);
    Spero sia utile a qualcuno
  • Re: Record Duplicati

    Quindi diverso da quello che ti accennavo... ?
    Non hai concatenato tutto...?
    Mah....
  • Re: Record Duplicati

    @Alex ha scritto:


    Quindi diverso da quello che ti accennavo... ?
    Non hai concatenato tutto...?
    Mah....
    Certo ma ho trovato la soluzione prima di capire il tuo messaggio perché non era ben chiaro
  • Re: Record Duplicati

    Il numero di telefono come discriminante??? è sicuro?
    Nome, Cognome, città e provincia ok... ma se il numero di telefono cambia che fai? lo tieni o lo scarti il record?
    Mario Rossi Milano MI 0222222xxx
    Mario Rossi Milano MI 3332588xxx
    Potrebbero essere la stessa persona...?!?
    Magari se possibile avere il codice fiscale quella sarebbe una bella discriminante.
  • Re: Record Duplicati

    Sono dei record di persone in entrata. Un database dei corsisti ce l'abbiamo. Questo serve solo a contare gli utenti che richiedono informazioni e prendere la loro anagrafica per poterci parlare telefonicamente. Quindi a me non interessa che abbia un telefono diverso. Può essere un qualsiasi omonimo (stesso nome e cognome, stessa città ma telefono diverso).. E quindi il telefono é il discriminante che, se già esistente, comunque deve eliminarmi i precedenti records di "vecchia data" e tenermi SOLO il più recente
Devi accedere o registrarti per scrivere nel forum
8 risposte