Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it L'avatar di eraclito
    Registrato dal
    May 2002
    Messaggi
    1,273

    mysql e update contemporanei

    Ciao a tutti,

    in uno script devo andare ad agiornare un campo su n righe di un db.

    nello script stabilisco un codice di priorità per ognuno dei record devo andare ad aggiornarlo.
    Per cui devo ad esempio assegnare 1 ai record che avevano valore 2 e 2 ai record che avevano valore 1.

    il problema è che se faccio le query

    update tabella set valore=1 where vaolre=2
    e
    update tabella set valore=2 where vaolre=1

    finisce che setto tutti a 2.

    avrei quindi bisogno di fare entrambe le query contemporanemanete, in modo che una volta cambiati i valori non vengano più coinvolti in altri cambaimenti...

    qualche idea?
    L'apprendere molte cose non insegna l'intelligenza
    Voglio avere dubbi più chiari

  2. #2
    Fai 3 update sul primo setti 1 a 0 sul secondo porti 2 a 1 e infine 0 a 2


  3. #3
    Utente di HTML.it L'avatar di eraclito
    Registrato dal
    May 2002
    Messaggi
    1,273
    Originariamente inviato da silverwings
    Fai 3 update sul primo setti 1 a 0 sul secondo porti 2 a 1 e infine 0 a 2

    cercavo una soluzione più "pulita", perchè lo script è più complesso dell'esempio, e in quel modo non ne esco...
    L'apprendere molte cose non insegna l'intelligenza
    Voglio avere dubbi più chiari

  4. #4
    Utente di HTML.it
    Registrato dal
    Jul 2005
    Messaggi
    509
    da niubbo mi recupererei in un array gli indici delle righe da modificare da 1 a 2
    e quindi eseguirei i due update basandone uno sull'array...ma probabilemtne ti complicheresti ancr di piu la vita.

  5. #5
    Utente di HTML.it L'avatar di eraclito
    Registrato dal
    May 2002
    Messaggi
    1,273
    Originariamente inviato da nexus
    da niubbo mi recupererei in un array gli indici delle righe da modificare da 1 a 2
    e quindi eseguirei i due update basandone uno sull'array...ma probabilemtne ti complicheresti ancr di piu la vita.
    questa era la soluzione alternativa a cui avevo pensato.
    Ma mi pareva di ricordare dell'esistenza di una sintassi per fare + query in "contemporanea"...
    L'apprendere molte cose non insegna l'intelligenza
    Voglio avere dubbi più chiari

  6. #6
    Utente di HTML.it
    Registrato dal
    Jul 2005
    Messaggi
    509
    serviva anche a me una cosa simile qualche tempo fa....ho girato mezz internet e non ho mai trovato nulla che facesse riferimento a questo caso

  7. #7
    Utente di HTML.it L'avatar di eraclito
    Registrato dal
    May 2002
    Messaggi
    1,273
    trovata!

    la sintassi è tipo questa:
    mysql> UPDATE tbl
    SET valore =
    CASE
    WHEN valore = '1' THEN 2
    WHEN valore = '2' THEN 1
    ELSE valore
    END
    http://database.html.it/articoli/leg...ry-di-mysql/3/
    L'apprendere molte cose non insegna l'intelligenza
    Voglio avere dubbi più chiari

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.