• User Newbie

    query sql che incrementa un campo

    Salve a tutti sono un nuovissimo utente, o meglio ho perso l'account che qualche volta ho usato 😄
    Ho una domanda per voi , sto scrivendo uno script php che mi permetta di gestire una classifica, la classifica è una tabella in un database mysql con un campo "nomesq" che contiene l'identificativo della squadra e il campo "punti" intero (ci sono altri campi ma il problema è qui).
    Vorrei scrivere una query che mi permettesse di aumentare il campo punti di zero, 1 o 3 punti a seconda dell'esito dell'incontro odierno, inizialmente avevo pensato di recuperare il campo punti con una prima query , incrementarlo di zero , 1 o 3 punti e fare una nuova query settando il campo punti col nuovo valore ,risultato della somma.
    Vorrei però scrivere una sola query!Ho cercato e trovato qualcosa del genere su un altro forum grazie al contributo di un certo Corrado Pandiani

    
    mysql> insert into t(id) values(1),(2),(3);
    Query OK, 3 rows affected (0.00 sec)
    Records: 3  Duplicates: 0  Warnings: 0
    
    mysql> select * from t;
    +----+-------+
    | id | campo |
    +----+-------+
    |  1 |     0 |
    |  2 |     0 |
    |  3 |     0 |
    +----+-------+
    3 rows in set (0.01 sec)
    
    
    mysql> insert into t(id) values(3) on duplicate key update campo=campo
    +1;
    Query OK, 2 rows affected (0.00 sec)
    
    mysql> insert into t(id) values(3) on duplicate key update campo=campo
    +1;
    Query OK, 2 rows affected (0.00 sec)
    
    
    Ecco il risultato dei due insert precedenti
    
    mysql> select * from t;
    +----+-------+
    | id | campo |
    +----+-------+
    |  1 |     0 |
    |  2 |     0 |
    |  3 |     2 |
    +----+-------+
    3 rows in set (0.00 sec)
    
    ```ed è esattamente quello che voglio fare io solo che non riesco a farlo con phpmyadmin.
    HO scritto questa query(da phpmyadmin e non dalla mia pagina php , per provare il funzionamento)
    
          INSERT  INTO  `classifica` 
    

    WHERE nomesq = "Fantasiosa" ON DUPLICATE
    KEY punti = punti +3;

     **Messaggio di MySQL: **
    

    #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE nomesq = "Fantasiosa" ON DUPLICATE
    KEY punti = punti +3' at line 2

    
    ho provato anche qualcosa del genere
    
         UPDATE  `classifica`  WHERE  `nomesq`  =  'Bob Marley F.c.' SET  `punti`  =  `punti`  +1;
    
    ma mi restituisce sempre l'errore, qualcuno mi sa aiutare?

  • ModSenior

    Prova cosi:
    [php]
    INSERT INTO classifica
    WHERE nomesq = "Fantasiosa" ON DUPLICATE
    KEY UPDATE punti = punti +3;
    [/php]


  • User Newbie
    **Errore**
    
         **query SQL:**     
                  INSERT  INTO  `classifica` 
    WHERE  `nomesq`  =  "Fantasiosa" ON  DUPLICATE 
    KEY  UPDATE  `punti`  =  `punti`  +3     
          **Messaggio di MySQL: ** 
      #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE  `nomesq`  =  "Fantasiosa" ON  DUPLICATE 
    KEY  UPDATE `punti`  =  `punti`' at line 2 
    
    
    

    Errore...ho copia incollato la tua query ma niente


  • User Newbie

    ci sono riuscito la query giusta è

    
        UPDATE classifica SET punti = punti +1 WHERE nomesq =  "Fantasiosa"
    

    EVVAIII