Newsgroup: it.comp.lang.visual-basic
Titolo: [sql] Eliminare i record doppi dopo averne salvato uno in una tabella temporanea

Beh la domanda è tutta nel testo.
So che è un argomento già affrontato, ma sono rimasto a metà strada e non so
come andare avanti.
Il comando in sql dovrebbe cominciare con DELETE, ma come faccio a dirgli di
cancellare solo quelli doppi? o superiori a 1?
Poi ovviamente con un altro comando ri-copio i records salvati. Ma uesta è
un'altra faccenda.
Grazie in anticipo a chi mi risponderà,
Buon anno,
Brio


Secondo me con una sequenza di istruzioni sql non ce la fai, soprattutto 
se i campi dei record doppi sono tutti identici, probabilmente ti devi 
fare prima una "select count(campo)...group by(campo)" per sapere quali 
sono i record doppi dopodichè ti apri un recordset sulla tabella e con 
un ciclo elimini i record...ma non è detto che sia il metodo migliore 
visto che non sono un esperto, se mi viene in mente qualcosa di più 
rapido ti faccio sapere
Ciao
Jk

"Brio" <frbr...@NOSPAMlibero.it> ha scritto

ripeto: usa un ciclo, memorizzando i valori del record, ed eliminando
man mano quelli che trovi identici.
ciao, auguri anche a te.


Allora ci avevo azzeccato
Auguri
Jk

Altolà! Mi sono accorto di un altro problema!
Non riesco a inserire nella tabella temporanea un solo record per ogni
doppione!
Ecco la mia query:
INSERT INTO Temp (Campo1, Campo2) SELECT (Campo1, Campo2) FROM AltraTabella
GROUP BY Campo1, Campo2 HAVING COUNT(*) >1
Perchè è sbagliata?
Ciao,
Brio
P.S.: Invece ho trovato la soluzione per il primo problema: basta fargli
cancellare i record che sono tutti uguali a quelli nella tabella temporanea.

Perchè è sbagliata?
E' sbagliata perche' da' quell'errore... come hai detto che e'?
Se ti riferisci al fatto che che in AltraTabella ci sono i record
multipli, perche' fare un HAVING COUNT?
Esegui direttamente cosi':
INSERT INTO Temp (Campo1, Campo2) 
	SELECT Campo1, Campo2 
	FROM AltraTabella
	GROUP BY Campo1, Campo2
in questo modo hai in un colpo solo la tabella senza record 
multipli ;-)
-- 
ciao, hal

 ciao, hal
Ciao, grazie e buon anno,
Brio

Fa schifo?
Piu' che altro fa almeno un passaggio in piu' che potrebbe benissimo
essere evitato ;-)
-- 
ciao, hal

[hal1961] ha scritto:
(snip)
i genovesi devono avere un hardware/software diverso dal mio!
Questo signore ha fatto le ore piccole per "allenarsi" in vista del veglione, e questa
mattina, invece di aggirarsi per casa con sguardo allucinato, è in grado di postare...
bah.... puoi darmi l'indirizzo del tuo pusher?
Salutoni e auguri
Sergio

bah.... puoi darmi l'indirizzo del tuo pusher?
Una buona colazione ricca di carboidrati :-)
-- 
ciao, hal

 Una buona colazione ricca di carbo idrati :-)
idrato di coca, idrato di cola... :P
ciao, auguri a tutti

ciao, auguri a tutti
Auguri anche da parte mia e risparmio un post per complimentarmi per i
vb links di sundaysw: non me li ricordavo cosi' "farciti".
Sei il miglior servizio di directory in circolazione, oltre a LDAP
dovremo inventare anche LDPAL ;-)
-- 
ciao, hal

 L'incorreggibile a.p ha colpito ancora :-)
quando vede [ot] non riesce a trattenersi :-)
Salutoni & auguri
Sergio

 situazione. Per la prima volta mi sono quasi aiutato in VB :)
scusate ho letto il 3ad che avevo in memoria perdendomi i primi passi ma ho
capito che bisogna eliminare i record doppi da una tabella , non so se sia
fattibile in SQL ma lo credo fortemente (io lo faccio una volta sola da
access ) :
tabella 1  [ID campo chiave]
ID campo1 campo2 [altri campi che non contano che siano doppi]
1    a    1    ...
2    a    2    ...
3    a    2    ...
4    b    2    ...
creo una tabella (TEMP) che ha la stessa struttura di tabella 1 solo che ha
Entrambi i campi [Campo1] e [Campo2] con il simbolo chiave primaria e [ID]
senza chiave
ora con una query di accodamento
INSERT INTO temp
SELECT Tabella1.*
FROM Tabella1;
copio i dati da tabella1 dentro a temp avendo in temp :
Temp 1  [campo1 e campo2 chiave]
ID campo1 campo2 [altri campi che non contano che siano doppi]
1    a    1    ...
2    a    2    ...
4    b    2    ...
ora se l'id mi va bene cosi basta che rinomino le tabelle e rimetto le
chiavi a posto quindi le tolgo a campo1 e campo2 che mi interessavano che
non fossero doppi e lo metto a ID che deve continuare a rimanere senza
duplicati
NB: se fosse possibile vorrei sapere la stringa di creazione in SQL di una
tabella con 2 o + campi come "campichiave" tnk
NNB: se non ci ho preso e ho cannato in pieno il 3ad aggiungetemi un OT ^_^
-- 
<Gigio2K>
Sito Comune
Nokia -> I.T.H.N. -> 
http://www.ithn.it/
VB -> I.C.L.VB -> 
http://www.it-lang-vb.net/

Il tuo discorso è troppo complicato per me.
Forse hai ragione?¿
Il mio sistema è po' da smanettone, il tuo dev'essere scientifico, ma l'ho
solo intuito.
Ciao,
Brio
