INSERT IN TABELLA

martedì 03 aprile 2012 - 13.11

hellen Profilo | Newbie

Ciao, apro la mia seconda richiesta.
Ho 2 tabelle SQL, la prima è ARTICOLI e la seconda è LISTINI
La prima tabella contiene, codice articolo, descrizione, prezzo euro, ...
La seconda contiene codice articolo, descrizione, numero listino, prezzo euro, ...
Devo leggere l'articolo dalla prima tabella e inserire nella seconda il prezzo euro con numero listino=99
Poi devo rileggere l'articolo dalla prima tabella, reinserire nella seconda lo stesso prezzo euro ma con numero listino=3
Quindi nella seconda tabella devo avere 2 record con lo stesso codice articolo ma con 2 numero listino diversi.
ecco il mio codice:

INSERT INTO [prova].[dbo].[LISTINI]
(CODART, NRLISTINO, UM, PREZZO, PREZZOEURO, UTENTEMODIFICA, DATAMODIFICA)
SELECT CODART, "99", UM, PREZZO, PREZZOEURO, UTENTEMODIFICA, DATAMODIFICA
FROM [prova].[dbo].[ARTICOLI] a
LEFT JOIN [PROVA].[dbo].[LISTINI]
on a.CODART = [PROVA].[dbo].[LISTINI].[CODART]
WHERE [PROVA].[dbo].[LISTINI].[CODART] is null

INSERT INTO [prova].[dbo].[LISTINI]
(CODART, NRLISTINO, UM, PREZZO, PREZZOEURO, UTENTEMODIFICA, DATAMODIFICA)
SELECT CODART, "3", UM, PREZZO, PREZZOEURO, UTENTEMODIFICA, DATAMODIFICA
FROM [prova].[dbo].[ARTICOLI] a
LEFT JOIN [PROVA].[dbo].[LISTINI]
on a.CODART = [PROVA].[dbo].[LISTINI].[CODART]
WHERE [PROVA].[dbo].[LISTINI].[CODART] is null and [PROVA].[dbo].[LISTINI].[NRLISTINO]='99'

Il problema è che il primo insert del listino 99 viene inserito correttamente ma con il secondo insert ho l'errore di violazione di codice, probabilmente sbaglio qualcosa nella where...
Grazie mille a tutti!
Hellen

alx_81 Profilo | Guru

>Ciao, apro la mia seconda richiesta.
Ciao

>INSERT INTO [prova].[dbo].[LISTINI]
>(CODART, NRLISTINO, UM, PREZZO, PREZZOEURO, UTENTEMODIFICA, DATAMODIFICA)
>SELECT CODART, "3", UM, PREZZO, PREZZOEURO, UTENTEMODIFICA, DATAMODIFICA
>FROM [prova].[dbo].[ARTICOLI] a
>LEFT JOIN [PROVA].[dbo].[LISTINI]
>on a.CODART = [PROVA].[dbo].[LISTINI].[CODART]
>WHERE [PROVA].[dbo].[LISTINI].[CODART] is null and [PROVA].[dbo].[LISTINI].[NRLISTINO]='99'
>
>Il problema è che il primo insert del listino 99 viene inserito
>correttamente ma con il secondo insert ho l'errore di violazione
>di codice, probabilmente sbaglio qualcosa nella where...
dovresti cortesemente passare la create della tabella e qualche record di esempio, in modo che possiamo provare per bene le query.
Detto questo, se vuoi replicare solo i nuovi inseriti "sopra" in quella sotto, semplicemente cambiando il codart,
ti consiglio di dare un'occhiata alla clausola OUTPUT. Sempre che nella versione del tuo SQL Server sia supportata..
Che versione hai?

>Grazie mille a tutti!
di nulla!
--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
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 !
Copyright © dotNetHell.it 2002-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5