Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2017
    Messaggi
    52

    [MYSQL] Update multi row con CASE WHEN

    Salve , devo aggiornare in una unica query una tabella A con alcuni parametri presi da una altra tabella B.

    I valori che arrivano dalla tabella B possono essere NULL oppure avere un valore numerico.

    Quando hanno un valore numerico devono essere sommati al campo della tabella A.

    Ho optato per questa soluzione e volevo chiedervi se è corretta tecnicamente oppure se esiste un'altra alternativa.

    Codice PHP:
    $this->query("UPDATE tabella A 
                                SET valore_uno = CASE WHEN :val_uno is true THEN valore_uno + :val_uno 
                                                    ELSE valore_uno 
                                               END,
                                    valore_due = CASE WHEN :val_due is true THEN valore_due + :val_due 
                                                     ELSE valore_due 
                                                END,
                                    valore_tre = CASE WHEN :val_tre is true THEN valore_tre + :val_tre 
                                                    ELSE valore_tre 
                                               END;
                                    
                            WHERE ....."
    );
    poi ovviamente i vari valori bind ect ect 

  2. #2
    invece di testare puoi usare ifNull

    a.valore_uno=a.valore_uno+IFNULL(b.val_uno,0)
    Ultima modifica di optime; 27-04-2020 a 12:21

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2017
    Messaggi
    52
    in poche parole se non è nullo somma il primo valore altrimenti somma 0?

  4. #4
    Utente di HTML.it L'avatar di cassano
    Registrato dal
    Aug 2004
    Messaggi
    3,002
    Esatto.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.