Come devo fare questa Qwery?

Si vogliono gestire alcune aziende e i dati anagrafici degli addetti che vi lavorano. Per ogni lavoratore si memorizzano i dati anagrafici, la data di assunzione, lo stipendio, l' ultimo premio di produzione ricevuto e, per ciascuna azienda sono necessari il nome, la regione di appartenenza e l' indirizzo. Definire il modello E-R della struttura ed eseguire le seguenti operazioni:

(...)

8) Assegnare un premio di produzione pari al 10% dello stipendio per i dipendenti del Veneto

Io ho provato:

UPDATE dipendenti

SET dipendenti.Premio = Stipendio+((Stipendio/100)*10)

FROM dipendenti, azienda

WHERE dipendenti.ida = azienda.Id_azienda

AND azienda.Regione="Veneto"

Ma mi da errore di sintassi, come devo fare? Grazie in anticipo :D

2 risposte

Classificazione
  • 8 anni fa
    Risposta preferita

    A parte che si dice query e che non hai specificato che database stai usando (SQL è simile per la maggior parte dei database, ma non sempre...)

    Comunque, l'errore è semplice: non si fa così :) Intanto, non va messo il FROM, perché è una query UPDATE e non SELECT...

    UPDATE dipendenti

    SET premio = stipendio * 1.1

    WHERE ida IN (SELECT Id_azienda FROM azienda WHERE Regione = "Veneto")

    Nota alcune cose:

    1. Per aggiungere il 10% a qualcosa basta moltiplicarlo per 1.1. Questo è decisamente più semplice e veloce del tuo calcolo :) (è matematica!) Viceversa, per sottrarre il 20% si moltiplica per 0.8, ad esempio.

    2. In questo caso ti serviva fare una sub-query. Ci possono essere altri modi, senza ricorrere a sub-query, magari più efficienti nell'esecuzione... Ma personalmente questo è il mio preferito, per immediatezza e semplicità. Se non sono query critiche, il tradeoff tra semplicità nella programmazione e velocità di esecuzione è a vantaggio della prima.

  • 8 anni fa

    no

Altre domande? Fai una domanda e ottieni le risposte che cerchi.