Newsgroup: it.comp.appl.access
Titolo: eliminare duplicati

Salve,
come posso creare una procedura che data una tabella elimina i duplicati
che rispettano una determinata condizione?
Esempio
P_ID        P_NOME        P_ COGNOME
   1                ingrid                esposito
   2                pippo                franco
   3                ingrid                 esposito
   4                tizio                    caio
   5                ingrid                 esposito
   6                tizio                    caio
   7                pippo                 franco
vorrei poter ottenere una tabella che mi eliminasse tutti i duplicati e
mi mantenga quelli che hanno id piú piccolo dunque
P_ID        P_NOME        P_ COGNOME
 1                ingrid                esposito
 2                pippo                franco
 4                tizio                    caio
come posso fare?
Mille grazie per ogni forma di aiuto

 ha scritto nel messaggio
news:418F551B...@zv.fraunhofer.de...

Una procedura esiste, ma purtroppo il tuo messaggio duplicato rimarrà
comunque nel ng.
Ti consiglio di leggere prima di tutto le regole del ng, poi dai un'occhiata
all'autocomposizione query, ne hai una che elimina proprio i record
duplicati.
Ciao,
Massimo
-- 
web: 
www.piubelli.net
Ciò che oggi è facoltativo domani sarà necessario.
Perchè non prepararci per tempo al futuro?
Vuoi il mio indirizzo? Togli _cut_ per rispondermi

Sono nuova qui, dove posso leggere le condizioni?
cosa ho fatto di sbagliato?
Mi dici che procedura esiste??
Io ne ho una che me li trova...ma non che me li cancella!
Ciao ingrid
TheMax schrieb:


 ha scritto nel messaggio
news:418F551B...@zv.fraunhofer.de...

Ciao,
Per eliminare i duplicati e mantenere solo l'Id più basso puoi fare così
Crea una nuova Query senza aggiungere nessuna tabella, premi il menu
Visualizza-->Visualizzazione SQL, incolla il codice qui sotto, sostituisci
Table1 con il nome della tua tabella, salva e prova ricordandoti di fare
prima una copia del tuo database (non si sa mai)
-----------------
DELETE *
FROM Table1
WHERE P_Id Not In (Select Min(P_Id)
                   From Table1
                   GROUP BY P_Nome, P_Cognome)
------------------
:-)
Ciao Giorgio

 ha scritto nel messaggio
news:418F551B...@zv.fraunhofer.de...

Creati una query di raggruppamento sui campi  P_NOME e P_COGNOME.
-- 
Roberto
---------------------------------------------
il Sito Comune di it.comp.appl.access:
http://www.sitocomune.com
---------------------------------------------

Sei un genio!!!
allora funziona!!!
Ora ho capito...ma il problema é ancora + complesso, vediamo se mi puoi
aiutare anche in questo.
Cancellando i duplicati devo stare attenta perké tale tabella "PERSONE" é in
relazione (1:n) con una tabella "ISCRIZIONE_SEMINARI" la quale tiene traccia
di tutte le iscrizioni delle persone a vari seminari.
Ora se elimino dalla tabella persone i miei duplicati, e mantendendo sempre
quelli con id piú piccolo, devo riuscir a fare in modo di cambiare l´id della
persona sulla tabella "ISCRIZIONE_SEMINARI" in modo che prenda il tizio
cancellato prenda id piú piccolo!!! Intendi cosa dico?
E´realizzabile questa cosa?
giorgio rancati schrieb:



Ciao,
vedo che ho fatto bene a farti fare la copia :-)
Come prima cosa bisogna cambiare l' ID_Persona nella tabella
ISCRIZIONE_SEMINARI e assegnargli il valore di Id più basso per lo stesso
Nome e Cognome.
Lo puoi fare con questa query
------------------------------
UPDATE PERSONE
    INNER JOIN ISCRIZIONE_SEMINARI
    ON PERSONE.P_ID = ISCRIZIONE_SEMINARI.ID_Persona
SET ID_Persona = DMin("P_Id","PERSONE","P_Nome='" & [P_Nome] & "' AND
P_Cognome='" & [P_Cognome] & "'");
-------------------------------
fai attenzione agli a capo la riga con SET è una sola. Se il campo non si
chiama ID_Persona provvedi a cambiarlo.
Non ho potuto usare le funzione SQL di aggregazione perchè Access ha il
grosso limite di rendere la query in sola lettura.
Fatto questo esegui la query di eliminazione suggerita nel post precedente.
ah... visto che sei nuova ricordati di dare uno sguardo alle *Istruzioni per
l'uso* che trovi al link 
http://www.sitocomune.com/
  premendo ICAA.
Buona lettura :-)
Ciao Giorgio