Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Query di insert alimentata dal risultato di un'altra query

47 views
Skip to first unread message

sayhem

unread,
Aug 30, 2007, 5:04:30 AM8/30/07
to
Perdonate l'eventuale banalità: come si fa a scrivere una query di
inserimento che sia alimentata dai risultati di un'altra query?

Mi spiego meglio: ho necessità di popolare alcune tabelle di un db, e
per avere dei dati coerenti e che rispettino i vincoli di chiave
esterna devo per forza di cose "copiarli" da una tabella all'altra.

Ad esempio (mi riferisco a SQL Server su cui sto lavorando):

1) avendo PRODOTTI(ID, DESC) e
DETTAGLIO_ORDINE(ID,PRODOTTO,QTA,PREZZO) quello che vorrei fare è
popolare DETTAGLIO ORDINE.PRODOTTO con i valori reali contenuti in
PRODOTTI.ID.

2) Vorrei anche capire come assegnare dei valori progressivi
(1,2,3,....) in DETTAGLIO_ORDINE.ID, tenendo conto che la colonna non
prevede auto_increment.

Grazie a chi risponderà...

Francesco Quaratino

unread,
Aug 30, 2007, 5:37:55 AM8/30/07
to
sayhem ha scritto:

> Perdonate l'eventuale banalità: come si fa a scrivere una query di
> inserimento che sia alimentata dai risultati di un'altra query?
>

[..]

> 1) avendo PRODOTTI(ID, DESC) e
> DETTAGLIO_ORDINE(ID,PRODOTTO,QTA,PREZZO) quello che vorrei fare è
> popolare DETTAGLIO ORDINE.PRODOTTO con i valori reali contenuti in
> PRODOTTI.ID.

--presumendo che la colonna ID di Dettaglio_Ordine sia IDENTITY, e che
Qta e Prezzo non ammettano NULL e siano di tipo numerico

INSERT Dettaglio_Ordine ( Prodotto, Qta, Prezzo)
SELECT ID, 0, 0 FROM Prodotti

>
> 2) Vorrei anche capire come assegnare dei valori progressivi
> (1,2,3,....) in DETTAGLIO_ORDINE.ID, tenendo conto che la colonna non
> prevede auto_increment.

con SQL 2005 puoi usare la ROWNUMBER (che restituisce il numero
sequenziale di una riga all'interno di una partizione di un set di
risultati, a partire da 1)

INSERT Dettaglio_Ordine ( Prodotto, Qta, Prezzo)
SELECT ROW_NUMBER() OVER ( order by ID), ID, 0, 0 FROM Prodotti

altrimenti ti devi ingegnare parecchio..

>
> Grazie a chi risponderà...
Prego a chi chiese :)
>


--
[Francesco Quaratino]

sayhem

unread,
Aug 30, 2007, 5:39:40 AM8/30/07
to
Grazie :)


0 new messages