Come utilizzare Select in un aggiornamento Normativa

November 4

I progettisti di Structured Query Language (SQL) hanno creato un potente strumento per gestire i dati con pochi semplici comandi. Uno dei più potenti costrutti si verifica quando i comandi sono annidati. A Selezionare, aggiornare o cancellare il comando utilizza uno o più supplementari selezionare i comandi per limitare il suo funzionamento. A titolo di esempio, un aggiornamento sulla tabella clienti si verifica solo quando le vendite totali aggregati da diversi record di vendita ammontano a più di $ 250. Seguire questa procedura per creare diversi comandi di aggiornamento nidificati.

istruzione

1 Aprire l'editor di query SQL e creare un nuovo database chiamato SampleDB. Scegliere questo database per la sessione di query.

Crea database SampleDB;

Utilizzare SampleDB;

Questi esempi sono stati creati utilizzando l'editor di query all'interno di Microsoft SQL Server 2008 Management Studio Express.

2 Creare due tabelle, clienti e vendite, e quindi aggiungere alcuni record di entrambe le tabelle utilizzando il seguente script.

Creare tabella Clienti

(Chiave primaria int CustomerID,

Nome varchar (50),

varchar di stato (10));

Inserire nel Valori Clienti (1, 'John Smith', 'Nuovo');

inserire i valori dei clienti (2, 'Mary Jones', 'Nuovo');

Inserire nel Valori Clienti (3, 'Fred Adams', 'Nuovo');

Crea una tabella vendite

(SalesID int chiave primaria,

CustomerID int Referenze clienti,

Importo int);

inserire valori di vendita (1, 1, 500);

inserire valori di vendita (2, 1, 250);

inserire valori di vendita (3, 3, 50);

3 Creare una query nidificate, combinando un aggiornamento con un'istruzione Select che imposta lo stato cliente di attivo per quei clienti che hanno attività nella tabella vendite.

aggiornamento clienti

Imposta stato = 'attivo'

dove CustomerID In

(Selezionare CustomerID delle vendite);

Questa è una dichiarazione di aggiornamento standard SQL che imposta il campo Stato attivo per un insieme selezionato di record nella tabella Clienti. In una query nidificate, la clausola WHERE include uno o più istruzioni Select circondati da parentesi (). Ogni istruzione SELECT restituisce un elenco di valori che possono essere comparati a un campo nella tabella. In questo caso, solo i record di clienti che hanno ID cliente si trovano nella tabella vendite verranno aggiornati.

4 Creare una seconda query nidificate utilizzando un'istruzione Select che aggrega totali delle vendite.

aggiornamento clienti

Imposta stato = 'Premium'

dove CustomerID In

(Selezionare CustomerID dalle vendite

GROUP BY CustomerID

Avendo sum (Importo)> 250);

Quando si analizzano le query nidificate, iniziare con le istruzioni Select presenti nella clausola WHERE. In questo caso, la tabella di vendite è aggregato da ID cliente (gruppo By CustomerID) al totale degli importi di vendita (Sum (importo)). Solo quelli con un fatturato totale superiore a 250 $ sono scelti. Questo elenco viene poi utilizzato per filtrare i record dei clienti vengono aggiornati (cliente 1).

5 Creare un altro di query nidificate che seleziona i record di clienti che non si trovano nella tabella vendite.

aggiornamento clienti

Imposta stato = 'inattivo'

dove CustomerID Not In

(Selezionare CustomerID delle vendite);

Questa query prima di selezionare un elenco di ID cliente si trovano nella tabella Sales (1 e 3) e poi aggiorna quelli che non si trovano in lista (cliente 2).

Consigli e avvertenze

  • Perché query nidificate eseguite due ricerche separate, tempo di esecuzione a volte diventa un problema.