You are here: Re: Un aiuto, per favore molto urgente!!! « MsSQL Server « IT news, forums, messages
Re: Un aiuto, per favore molto urgente!!!

Posted by Erland Sommarskog on 01/29/07 23:00

(e.torresi@alice.it) writes:
> Avrei questo problema
> devo spostare dei campi da una tabella in cui appoggio i record
> recuperati da un file excel in varie tabelle esterne.
> La tabella di appoggio contiene in totale 92 colonne da spostare in
> varie tabelle relazionate.
> In pratica dovrei fare un loop su tutti i record della tabella di
> appoggio prendermi i campi ed inserirli in varie tabelle relazionate
> in cascata tra di loro
> I passi da fare sono:
>
> - leggere i valori nei campi dalla tabella di appoggio,
> - fare una select sulla tabella di destinazione.
> - se esiste un record con gli stessi valori eventualmente fare un
> update per i campi vuoti,
> - altrimenti fare direttamente un' insert di un nuovo record,
> - recuperare l'id del record inserito o trovato quindi leggere altri
> campi dal record della tabella di appoggio
> - quindi effettuare un update o insert di questi nella tabella 2
> relazionata con l' ID recuperato dalla tabella 1
> etc.. per ogni record della tabella di appoggio iniziale.
>
> Ogni record contiene campi di varie tabelle che sono relazionate tra
> loro.
> Premetto di aver già scritto una stored procedure con l'uso di
> cursori, ma vorrei evitare evitare l'uso di questi ultimi...
> Cosa mi consigliate? Potreste farmi un esempio (o indicarmi un link)
> di come fare utilizzando
> un ciclo While se è possibile?

[For those how don't speak Italian, e.torresi has a staging table that
he wants to merge with existing tables.]

Dovrebbe essere di faro questa operazione senza un cursor, ma diventa
difficile che non c'è un chiave unico nella tabella di appoggio. Allora,
presume che c'è un chiave. :-)

Il più facile è probilamente di aggiunere due altri campi alla
tabella di appoggio:

isnew bit NOT NULL DEFAULT 1,
id int NULL

Dope fare come così:

1) UPDATE appoggio
SET id = d.id,
isnew = 0
FROM appoggio a
JOIN destinazione d ON .....

2) UPDATE destinazione
SET col1 = ...
FROM appoggio a
JOIN destinazione d ON a.id = d.id

3) UPDATE altri tabelle

4) INSERT desitniatione (.....)
SELECT ....
FROM appoggio (....)
WHERE isnew = 1

5) UPDATE appoggio
SET id = d.id
FROM appoggio a
JOIN destinazione d ON .....
WHERE a.isnew = 1

6) INSERT altri tabelli

Si hai più domandi, per favore, incluse il tuo procedure.

--
Erland Sommarskog, SQL Server MVP, esquel@sommarskog.se

Books Online for SQL Server 2005 at
http://www.microsoft.com/technet/prodtechnol/sql/2005/downloads/books.mspx
Books Online for SQL Server 2000 at
http://www.microsoft.com/sql/prodinfo/previousversions/books.mspx

 

Navigation:

[Reply to this message]


Удаленная работа для программистов  •  Как заработать на Google AdSense  •  England, UK  •  статьи на английском  •  PHP MySQL CMS Apache Oscommerce  •  Online Business Knowledge Base  •  DVD MP3 AVI MP4 players codecs conversion help
Home  •  Search  •  Site Map  •  Set as Homepage  •  Add to Favourites

Copyright © 2005-2006 Powered by Custom PHP Programming

Сайт изготовлен в Студии Валентина Петручека
изготовление и поддержка веб-сайтов, разработка программного обеспечения, поисковая оптимизация