Newsgroup: it.comp.appl.access
Titolo: Query per creare nuova tabella  come posso impostarla per evitare duplicati di record ?

buongiorno a tutti.
 
Avevo una tabella...come inizia(va)no tante favole, nella quale andavo tramite una query a accodare i file. 
Questa tabella era regolata da una query di definizione dati:
 
ALTER TABLE tbl_DATIENE ADD CONSTRAINT NoDupes UNIQUE (CodImmobile, Data1)
 
che non consentiva l'acquisizione di dati doppi, (aventi cioè stesso CodImmobile e Data1).
Ho purtroppo scoperto che accodando più volte i dati qualcuno di  questi, e non ne comprendo bene il perchè, riusciva a raddoppiarsi....
Quindi ora ho optato per una più sana (spero !!!) query di creazione tabella:
 
SELECT PROVACARICAMENTO.Data1, PROVACARICAMENTO.[Energia attiva Fascia 1], PROVACARICAMENTO.[Energia attiva Fascia 2], PROVACARICAMENTO.[Energia attiva Fascia 3] INTO tbl_DATIENE
FROM PROVACARICAMENTO
WHERE (((PROVACARICAMENTO.Data1)<>0) AND ((PROVACARICAMENTO.[Energia attiva Fascia 1])<>"0") AND ((PROVACARICAMENTO.[Energia attiva Fascia 2])<>"0") AND ((PROVACARICAMENTO.[Energia attiva Fascia 3])<>"0"));
 
nella quale però vorrei inserire il mio criterio salva-doppioni, citato prima.
 
Qualcuno mi può gentilmente aiutare...grazie.
buon fine settimana.


 
 
studiati l'istruzione
 
select ... from.... where ....  NOT IN (select....from)
 
 
in pratica ti permette di selezionare tutti i record di una tabella non 
presenti in un altra
 
es
 
select * from prima tabella where codimmobile not in (select codimmonile 
from secondatabella)
 
 
volendo puoi fare anche insert into....  not in....
 
in questo modo non avrai mai doppioni da accodare
 
ciao
BFS

ciao BFS, grazie per l'imbeccata.
Ora ci provo anche se come ricorderai, non ho molta dimistichezza con la programmazione.
Volevo solo chiederti una conferma anche se la mia domanda ti potrà sembrare molto sciocca.
Ipotizziamo che la tabella che vado a creare con la query si chiami "tabella1" e che da essa dipendano query, maschere eccetera. Se io la cancello ovviamente le stesse (query, maschere ecc) presentano dati #N/D.
Quando con la mia query ricostruisco la "tabella1" mi confermi che query maschere ecc..  ritornano ad essere alimentate ?
 
Grazie infinite scusami ma ho qualche dubbio se scegliere tra l'aggiornamento e la creazione della tabella.
ciao buona giornata.


 
si...anche se non mi sembra la soluzione ottimale quella di cancellare 
tabelle e query per un semplice problema di evitare duplicati
 
ciao
BFS

ciao BFS,
il mio problema è questo.
 
Ricevo dei dati in excel che devo inserire in 4 tabelle. Ciascuna tabella, relativa ad una tipologia energivora, è composta da codiceimmobile e data + dati vari.
Mi è indispensabile per evitare doppi inserimenti che codiceimmobile+data siano univoci.
Tutti questi excel io li accodo (con un banale taglia incolla) ad una tabella "provacaricamento"
 
Il mio dubbio è se sia meglio utilizzare una query di creazione tabella o di aggiornamento per alimentare le 4 tabelle univoche in cui i dati vengono ripartiti per tipologia.
 
Utilizzando l'aggiornamento ho riscontrato quelche dato doppio per cui volevo orientarmi sulla creazione tabella, ma ho paura di perdere gli eventuali collegamenti con query e maschere varie....
 
spero di essermi spiegato meglio , ti ringrazio per la senmpre gradita disponibilità e ti saluto.

questa è la mia query di creazione tabella. Vorrei rendere univoco il campo "verifica"
ma non ci riesco....mi riesci ad aiutare ? grazie infinite, ciao.
 
SELECT PROVACARICAMENTO.CodImmobile, PROVACARICAMENTO.Data1, PROVACARICAMENTO.[Energia attiva Fascia 1], PROVACARICAMENTO.[Energia attiva Fascia 2], PROVACARICAMENTO.[Energia attiva Fascia 3], [CodImmobile] & '-' & [Data1] AS Verifica INTO tbl_DATIENE


Rilancio il mio problema, qualcuno ha modo di potermi aiutare ?
 
grazie infinite a tutti.
 


 
 
INSERT INTO tabellaDoveDeviInserire (.... le varie colonne) select  ( le 
varie colonne) from provedicaricamento where [CodImmobile] & '-' & 
[Data1] NOT IN (select [CodImmobile] & '-' & [Data1] from 
tabellaDoveDeviInserire )
 
 
tradotto "accoda dentro tabelladovedeviinserire le colonne di 
provedicaricamento dove codiceimmobile-data non sono � gia presente in 
codiceimmobile-data di tabelladovedeviinserire
 
 
ciao
BFS

Ciao BFS, faccio pubblica ammenda della mia ignoranza ma proprio non ne vuole sapere e continuo a mettere/levare virgole parentesi e altro ma niente da fare...
 
il mio codice è questo:
 
INSERT INTO tbl_DATIENE (tbl_DATIENE.CodImmobile, tbl_DATIENE.Data1,tbl_DATIENE.Energia1, tbl_DATIENE.Energia2, tbl_DATIENE.Energia3)
SELECT (PROVACARICAMENTO.CodImmobile, PROVACARICAMENTO.Data1, PROVACARICAMENTO.Energia1, PROVACARICAMENTO.Energia2, PROVACARICAMENTO.Energia3) FROM PROVACARICAMENTO
WHERE [CodImmobile] & '-' & [Data1] NOT IN (SELECT [CodImmobile] & '-' & [Data1] from tbl_DATIENE) 
 
spero davvero tu abbia ancora la pazienza di seguirmi e ti ringrazio di cuore.
M


 
che errore ti da?
 

quando cerco di salvare il codice mi dà :
 
"Errore di sintassi (virgola) nell'espressione 
della query '(PROVACARICAMENTO.CodImmobile, PROVACARICAMENTO.Data1, PROVACARICAMENTO.Energia1, PROVACARICAMENTO.Energia2, PROVACARICAMENTO.Energia3)'.