Pannello di Controllo Moderatore ]

[RISOLTO]Comando SQL UPDATE su 2 tabelle con SubQuery

Discussioni sulle caratteristiche di database

[RISOLTO]Comando SQL UPDATE su 2 tabelle con SubQuery

Messaggioda Gaetanopr » domenica 13 gennaio 2013, 11:03

Salve, dovrei aggiornare il campo di una tabella prendendo come condizione il totale di un campo da un altra tabella.
Nella 1^tabella chiamata CLIENTI è presente un campo chiamato TipologiaCliente con valore predefinito Standard.
Tramite un comando SQL vorrei aggiornare lo stato da Standard a Premium per tutti i clienti che nella 2^tabella chiamata MOVIMENTI nel campo ImportoPagato presentano un totale movimenti uguale superiore ad euro X facciamo 2000.
Avevo pensato di usare l'istruzione UPDATE ma con due tabelle mi viene difficile non riesco ad impostare la condizione => 2000 sul campo dell'altra tabella.
Tra i vari tentativi ho provato pure questo con il seguente messaggio di errore
Come potrei fare.
Grazie per qualsiasi tipo di aiuto
Allego DB
Codice: Seleziona tutto   Espandi visualeStringi visuale
UPDATE "CLIENTI", "MOVIMENTI"
   SET "CLIENTI"."TipologiaCliente" = 'PREMIUM'
   WHERE "CLIENTI"."IDCliente" = "MOVIMENTI"."IDCliente" AND "MOVIMENTI"."ImportoPagato" => '2000';

1: Termine inaspettato ,, richiede SET in statement [UPDATE "CLIENTI",]

Allegati
dbupdate.odb
(4.57 KiB) Scaricato 89 volte
Ultima modifica di Gaetanopr il martedì 15 gennaio 2013, 20:35, modificato 2 volte in totale.
Openoffice 4.1 su windows xp
Gaetanopr
Volontario
Volontario
 
Messaggi: 2847
Iscritto il: mercoledì 21 novembre 2012, 20:07

Re: Comando SQL UPDATE su 2 tabelle

Messaggioda Gaetanopr » martedì 15 gennaio 2013, 13:50

Se il campo da prendere in considerazione si trovasse nella stessa tabella del campo da aggiornare basterebbe lanciare il comando seguente, però andrebbe ad analizzare l'importoPagato per singolo record quindi aggiornerebbe lo stato da standard a premium solo per i clienti che superano la soglia per singola transazione.
Qualcuno conosce il modo corretto per impostare questo comando affinchè faccia il suo dovere? Cioè prendere come condizione il totale del campo di un'altra tabella.
Grazie

Codice: Seleziona tutto   Espandi visualeStringi visuale
UPDATE "CLIENTI"
   SET "TipologiaCliente" = 'PREMIUM'
   WHERE "ImportoPagato" => '2000';
Openoffice 4.1 su windows xp
Gaetanopr
Volontario
Volontario
 
Messaggi: 2847
Iscritto il: mercoledì 21 novembre 2012, 20:07

Re: Comando SQL UPDATE su 2 tabelle

Messaggioda Gaetanopr » martedì 15 gennaio 2013, 20:20

Finelmente ci sono riuscito ma in parte dopo tanti tentativi
L'UPDATE con subquery è la seguente
Codice: Seleziona tutto   Espandi visualeStringi visuale
UPDATE "CLIENTI"
     SET "TipologiaCliente" = 'Premium'
  WHERE "IDCliente" IN (SELECT "IDCliente" FROM "MOVIMENTI"
                                           WHERE "ImportoPagato" >= 2000)


L'unica cosa che mi rimane è che devo dirgli di prendere il totale degli importi e non gli importi singoli, per adesso mi aggiorna solamente i clienti con singola transazione >=2000.
Openoffice 4.1 su windows xp
Gaetanopr
Volontario
Volontario
 
Messaggi: 2847
Iscritto il: mercoledì 21 novembre 2012, 20:07

Re: [RISOLTO]Comando SQL UPDATE su 2 tabelle

Messaggioda Gaetanopr » martedì 15 gennaio 2013, 20:32

Questo è il comando
Codice: Seleziona tutto   Espandi visualeStringi visuale
UPDATE "CLIENTI"
     SET "TipologiaCliente" = 'Premium'
  WHERE "IDCliente" IN (SELECT "IDCliente" FROM "MOVIMENTI" GROUP BY "IDCliente"
                                                  HAVING  SUM( "ImportoPagato" )  >= 2000)


bastava aggiungere la somma e il raggruppamento per IDCliente e cambiare WHERE con HAVING nei raggruppamenti.

Alla prossima
Openoffice 4.1 su windows xp
Gaetanopr
Volontario
Volontario
 
Messaggi: 2847
Iscritto il: mercoledì 21 novembre 2012, 20:07


Torna a Base

Chi c’è in linea

Visitano il forum: Nessuno e 4 ospiti