Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
SQL Server 2000/2005/2008, Express, Access, MySQL, Oracle
Inserire dati in tabella .. senza fare duplicati
lunedì 03 marzo 2008 - 09.35
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
angie81
Profilo
| Junior Member
120
messaggi | Data Invio:
lun 3 mar 2008 - 09:35
devo scrivere una query che inserisca dei record in una tabella A (recuperandoli da una vista B) controllando però che il record presente nella vista non sia già stato copiato nella tabella A..
un aiutino?
amelix
Profilo
| Expert
694
messaggi | Data Invio:
lun 3 mar 2008 - 09:39
Fai un JOIN tra la tabella A e la B e prendi quelli che non sono nella tabella A.
SELECT B.* FROM B LEFT JOIN A ON A.ID = B.ID WHERE A.ID IS NULL
OK?
Andrea -
http://www.MelisWeb.eu/
CMS -
http://www.WebOrama.it/
angie81
Profilo
| Junior Member
120
messaggi | Data Invio:
lun 3 mar 2008 - 10:06
se ho capito bene...
INSERT @tmp
(
[COD_PROGETTO],
[DESCRIZIONE_PROGETTO],
[USERID],
[PARTITA_IVA_COD_FISCALE],
[DES_USER],
[DES_INCARICO],
[ANNO],
[MESE],
[NUM_ORE],
[COSTO],
[DATA_MODIFICA],
[ID_INCARICO]
)
SELECT
[COD_PROGETTO],
[DESCRIZIONE_PROGETTO],
[USERID],
[PARTITA_IVA_COD_FISCALE],
[DES_USER],
[DES_INCARICO],
[ANNO],
[MESE],
[NUM_ORE],
[COSTO],
[DATA_MODIFICA],
[ID_INCARICO]
FROM
VEXPORT_GEDEO
LEFT JOIN
TBL_ESPORTA_GEDEO
ON
(
TBL_ESPORTA_GEDEO.COD_PROGETTO = VEXPORT_GEDEO.COD_PROGETTO
AND
TBL_ESPORTA_GEDEO.USERID = VEXPORT_GEDEO.USERID
AND
TBL_ESPORTA_GEDEO.ID_INCARICO = VEXPORT_GEDEO.ID_INCARICO
)
WHERE
(
mese BETWEEN @mese_da AND @mese_a
)
AND
(
anno BETWEEN @anno_a AND @anno_da
)
amelix
Profilo
| Expert
694
messaggi | Data Invio:
lun 3 mar 2008 - 10:19
Sembra corretta... definisci anche la tabella del valorizza l'insert
>INSERT @tmp
>(
> [COD_PROGETTO],
> [DESCRIZIONE_PROGETTO],
> [USERID],
> [PARTITA_IVA_COD_FISCALE],
> [DES_USER],
> [DES_INCARICO],
> [ANNO],
> [MESE],
> [NUM_ORE],
> [COSTO],
> [DATA_MODIFICA],
> [ID_INCARICO]
>)
>SELECT
> VEXPORT_GEDEO.[COD_PROGETTO],
> [DESCRIZIONE_PROGETTO],
> [USERID],
> [PARTITA_IVA_COD_FISCALE],
> [DES_USER],
> [DES_INCARICO],
> [ANNO],
> [MESE],
> [NUM_ORE],
> [COSTO],
> [DATA_MODIFICA],
> [ID_INCARICO]
>
>FROM
>VEXPORT_GEDEO
>LEFT JOIN
>TBL_ESPORTA_GEDEO
>ON
>(
> TBL_ESPORTA_GEDEO.COD_PROGETTO = VEXPORT_GEDEO.COD_PROGETTO
> AND
> TBL_ESPORTA_GEDEO.USERID = VEXPORT_GEDEO.USERID
> AND
> TBL_ESPORTA_GEDEO.ID_INCARICO = VEXPORT_GEDEO.ID_INCARICO
>)
>WHERE
>(
>mese BETWEEN @mese_da AND @mese_a
>)
>AND
>(
>anno BETWEEN @anno_a AND @anno_da
>)
Andrea -
http://www.MelisWeb.eu/
CMS -
http://www.WebOrama.it/
angie81
Profilo
| Junior Member
120
messaggi | Data Invio:
lun 3 mar 2008 - 10:21
ti riferisci al @tmp?
nella mia query però io non ho inserito
WHERE A.ID IS NULL
amelix
Profilo
| Expert
694
messaggi | Data Invio:
lun 3 mar 2008 - 10:32
No.
Nel senso che VEXPORT_GEDEO e TBL_ESPORTA_GEDEO avranno la stessa struttura.
Nel SELECT che popola l'insert tu hai messo solo il nome della colonna senza definire la fonte...
Per il resto sembra corretto.
Se NON metti "A.ID IS NULL" ti restituirà quelli che cisono già assieme a quelli che non hai...
A.
Andrea -
http://www.MelisWeb.eu/
CMS -
http://www.WebOrama.it/
Torna su
Stanze Forum
Elenco Threads
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?
Dopo esserti registrato potrai chiedere
aiuto sul nostro
Forum
oppure aiutare gli altri
Consulta le
Stanze
disponibili.
Registrati ora !