Discussione:
Evitare Duplicati su Query
(troppo vecchio per rispondere)
andreaf
2004-12-23 16:53:01 UTC
Permalink
Salve,
ho una query di accodamento che inserisce dei record in una tabella in
maniera continua ed automatica.
Il mio problema nasce dalla necessità di evitare di accorda recod già
accodati.
I campi della mia query e quindi della mia tabella sono:

ID(contatore) - NrFatt - Data - RagioneSociale - ScadenzaData -
ScadenzaImporto

Vorrei dire alla query di evitare duplicati.
Potrei dire che ogni campo non ammetta dulicati ma non otterrei l'effetto
sperato in quanto quello che voglio è che
non venga accodato un record in qui TUTTI i campi sono uguali ad un record
inserito precedentemente.
Es:
NrFatt Data RagioneSociale ScadenzaData ScadenzaImporto
1 12/06 Pippo 13/06 1.200?
1 12/06 Pippo 30/07 1.200?
1 12/06 Pippo 13/06 1.200?
QUESTO RIGA VORREI CHE VENISSE SALTATA

Come posso fare?
Alessandro Cara
2004-12-23 17:14:10 UTC
Permalink
Post by andreaf
Salve,
ho una query di accodamento che inserisce dei record in una tabella in
maniera continua ed automatica.
Il mio problema nasce dalla necessità di evitare di accorda recod già
accodati.
ID(contatore) - NrFatt - Data - RagioneSociale - ScadenzaData -
ScadenzaImporto
Vorrei dire alla query di evitare duplicati.
Potrei dire che ogni campo non ammetta dulicati ma non otterrei l'effetto
sperato in quanto quello che voglio è che
non venga accodato un record in qui TUTTI i campi sono uguali ad un record
inserito precedentemente.
NrFatt Data RagioneSociale ScadenzaData ScadenzaImporto
1 12/06 Pippo 13/06 1.200?
1 12/06 Pippo 30/07 1.200?
1 12/06 Pippo 13/06 1.200?
QUESTO RIGA VORREI CHE VENISSE SALTATA
Come posso fare?
non e' la cosa piu' "performante" ma potresti definire un indice univoco
che comprenda "tutti" i campi interessati
--
a.cara
Alex NSB
2004-12-23 17:24:16 UTC
Permalink
Post by andreaf
ho una query di accodamento che inserisce dei record in una tabella in
maniera continua ed automatica.
Ma la query da dove prende i dati da inserire? Fa una SELECT su qualche
tabella?

Alessandro
andreaf
2004-12-23 17:35:55 UTC
Permalink
Post by Alex NSB
Post by andreaf
ho una query di accodamento che inserisce dei record in una tabella in
maniera continua ed automatica.
Ma la query da dove prende i dati da inserire? Fa una SELECT su qualche
tabella?
Alessandro
li prende da una query che a sua volta filtra i dati da una tabella
Alex NSB
2004-12-23 18:00:40 UTC
Permalink
Post by andreaf
Post by Alex NSB
Post by andreaf
ho una query di accodamento che inserisce dei record in una tabella
in maniera continua ed automatica.
Ma la query da dove prende i dati da inserire? Fa una SELECT su
qualche tabella?
Alessandro
li prende da una query che a sua volta filtra i dati da una tabella
Beh, questo codice funziona tra due tabelle (tabella1 e tabella2) identiche.
Inserisce in tabella2 solo i records che sono in tabella1 e non hanno un
corrispondente identico in tabella2.

INSERT INTO tabella2 SELECT * FROM tabella1 t1
WHERE not exists (select null from tabella2 t2 where t1.campo1=t1.campo1 and
t2.campo2=t1.campo2);


Penso non dovresti aver problemi ad adattarlo alla tua situazione.

HTH.

Alessandro
andreaf
2004-12-23 18:15:31 UTC
Permalink
Post by Alex NSB
Post by andreaf
Post by Alex NSB
Post by andreaf
ho una query di accodamento che inserisce dei record in una tabella
in maniera continua ed automatica.
Ma la query da dove prende i dati da inserire? Fa una SELECT su
qualche tabella?
Alessandro
li prende da una query che a sua volta filtra i dati da una tabella
Beh, questo codice funziona tra due tabelle (tabella1 e tabella2) identiche.
Inserisce in tabella2 solo i records che sono in tabella1 e non hanno un
corrispondente identico in tabella2.
INSERT INTO tabella2 SELECT * FROM tabella1 t1
WHERE not exists (select null from tabella2 t2 where t1.campo1=t1.campo1 and
t2.campo2=t1.campo2);
Penso non dovresti aver problemi ad adattarlo alla tua situazione.
HTH.
Alessandro
scusami ma sono un pò rinco... a quest'ora poi....ma non riesco ad adattare
il tuo codice....
Questa è la mia query in vista SQL

INSERT INTO PROSPETTO_PAGAMENTI ( nr_fattura, serie, ragione_sociale,
scadenza_data, scadenza_imp )
SELECT DISTINCT FATTURE.nr_fattura, FATTURE.serie, FATTURE.ragione_sociale,
FATTURE.scadenza_data_1, FATTURE.scadenza_imp_1
FROM FATTURE;

Come potrei modificarla????Grazie per la pazienza!!!
Alex NSB
2004-12-23 18:29:48 UTC
Permalink
Post by andreaf
Post by Alex NSB
Beh, questo codice funziona tra due tabelle (tabella1 e tabella2) identiche.
Inserisce in tabella2 solo i records che sono in tabella1 e non
hanno un corrispondente identico in tabella2.
INSERT INTO tabella2 SELECT * FROM tabella1 t1
WHERE not exists (select null from tabella2 t2 where
t1.campo1=t1.campo1 and
t2.campo2=t1.campo2);
Penso non dovresti aver problemi ad adattarlo alla tua situazione.
HTH.
Alessandro
scusami ma sono un pò rinco... a quest'ora poi....ma non riesco ad
adattare il tuo codice....
Questa è la mia query in vista SQL
INSERT INTO PROSPETTO_PAGAMENTI ( nr_fattura, serie, ragione_sociale,
scadenza_data, scadenza_imp )
SELECT DISTINCT FATTURE.nr_fattura, FATTURE.serie,
FATTURE.ragione_sociale, FATTURE.scadenza_data_1,
FATTURE.scadenza_imp_1
FROM FATTURE;
Come potrei modificarla????Grazie per la pazienza!!!
Non che io sia lucidissimo (e non dipende dall'ora) ma proverei qualcosa
tipo:

INSERT INTO PROSPETTO_PAGAMENTI (nr_fattura, serie, ragione_sociale,
scadenza_data, scadenza_imp)
SELECT F.nr_fattura, F.serie, F.ragione_sociale, F.scadenza_data_1,
F.scadenza_imp_1
FROM FATTURE F WHERE NOT EXISTS (SELECT null FROM PROSPETTO_PAGAMENTI P
WHERE F.nr_fattura=P.nr_fattura AND F.serie=P.serie AND
F.ragione_sociale=P.ragione_sociale AND F.scadenza_data_1=P.scadenza_data
AND F.scadenza_imp_1=P.scadenza_imp);

SE&O :-)

Alessandro

Continua a leggere su narkive:
Loading...