Condividi tramite

Ottenere da una query di eliminazioni duplicati , solo record che hanno una lunghezza inferiore su un dato campo

Anonimo
2013-09-05T09:31:50+00:00

Salve , tramite il prezioso aiuto di Giorgio Roncati , ero riuscito ad ottenere una query che mi ha eliminato circa il 90% di record duplicati prensenti in una tabella , lasciando ovviamente solo il record più aggiornato su un determinato campo. Ora dopo aver fatto altre modifiche alla query per eliminare altri doppioni , ho il problema di dover eliminare il record doppio che però ha il campo telefono meno lungo.

A questo fine ho provato a modificare la query in questo modo non ottenendo però alcun esito:

SELECT *

FROM clienti

WHERE EXISTS (SELECT 1 FROM clienti AS T1

              WHERE T1.Nominativo=clienti.Nominativo AND

                    T1.Indirizzo=clienti.Indirizzo AND

                    T1.Citta=clienti.Citta and

                    t1.telefono=clienti.telefono

              GROUP BY Nominativo, Indirizzo, Citta, telefono

              HAVING COUNT(*)>1 AND Min(Len([telefono])) <> Len([clienti.telefono])

              );

convinto che il problema fosse nel calcolo della Len , ho provato a creare una query che mi estrapolasse la Len per poi darla "in pasto" alla query sopra, ciò che però ottengo è questo errore: "Errore sconosciuto del modulo di gestione di database di Access"

la query dove ottengo la Len è questa:

SELECT clienti.codice, clienti.nominativo, clienti.sesso, clienti.indirizzo, clienti.[codice fiscale], clienti.citta, clienti.data_nascita, clienti.luogo_nascita, clienti.telefono, Len([telefono]) AS tel_

FROM clienti;

e la query per ottenere il dato da cancellare a quel punto diventa:

SELECT *

FROM cli

WHERE EXISTS (SELECT 1 FROM cli AS T1

              WHERE T1.Nominativo=cli.Nominativo AND

                    T1.Indirizzo=cli.Indirizzo AND

                    T1.Citta=cli.Citta and

                    t1.tel_=cli.tel_

              GROUP BY Nominativo, Indirizzo, Citta, telefono

              HAVING COUNT(*)>1 AND Min(tel_) <> (cli.tel_)

              );

che appunto restituisce l'errore sopra.

Non riesco a capire dove sbaglio ... se qualcuno riesce ad indirizzarmi gli sarei grato.

Grazie anticipatamente

Microsoft 365 e Office | Accesso | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento

Risposta accettata dall'autore della domanda

  1. Anonimo
    2013-09-13T14:59:05+00:00

    Ciao GoG_,

    prova a vedere se questa fa quello che vuoi, l'ho provata con 4 dati e mi pare individuare il record da eliminare,  ma va testata su una quantità di dati maggiore

    SELECT *

     FROM clienti

     WHERE EXISTS (SELECT  1 FROM clienti AS T1

                   WHERE T1.Nominativo=clienti.Nominativo AND

                         T1.Indirizzo=clienti.Indirizzo AND

                         T1.Citta=clienti.Citta  AND

                        len( T1.Telefono)> len(Clienti.Telefono)

                   GROUP BY Cognome, Indirizzo, Citta   , len(Telefono)

                   HAVING COUNT(*)>=1

                   );

    La risposta è stata utile?

    0 commenti Nessun commento

10 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2013-09-09T07:29:22+00:00

    Anche se riguarda un'istruzione sql?

    Grazie per la risposta

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2013-09-09T07:15:24+00:00

    Ciao GoG\_,

    per una migliore assistenza chiedi supporto al Microsoft Visual Basic Forum, appositamente creato per gli sviluppatori VB.

    Un saluto,

    Laura

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2013-09-06T10:13:17+00:00

    Grazie, ho caricato solo un db di prova con una query che stavo provando , il file è qui

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2013-09-06T09:45:33+00:00

    Ciao GoG\_,

    per favore, metti in condivisione su SkyDrive il file che hai creato, così possiamo capire meglio il problema e aiutarti più velocemente.

    Per inviare il Tuo documento, leggi con molta attenzione “**Uso di SkyDrive per caricare file e immagini nel forum** di Microsoft Community.

    Un saluto,

    Laura

    La risposta è stata utile?

    0 commenti Nessun commento