MySQL Forums
Forum List  »  Italian

Re: Problema con query
Posted by: Alfredo Camaiti
Date: January 16, 2009 01:17PM

Michele Abbondanza Wrote:
-------------------------------------------------------
> ciao!
> il problema è che tu cerchi di usare l'if non
> come Control Flow, ma come statement.
> la sintassi che hai usato tu la potresti usare
> dentro ad una stored e funzionerebbe invece dentro
> una select è questa la sintassi:
> IF(expr1,expr2,expr3)
> comunque per il tuo problema io farei così:
>
> UPDATE tabella SET valore=valore+1 WHERE id_user =
> 4 AND data = CURRENT_DATE;
> insert IGNORE into tabella (id_user,valore,data)
> VALUES ('4','1',CURRENT_DATE);

Innanzitutto un grazie Michele :)
Ho provato la tua soluzione, ma purtroppo l'INSERT IGNORE funziona correttamente solo alla prima esecuzione. Mi spiego meglio:
la prima volta non trova nessun record per utente e data specifica, l'UPDATE non modifica nulla e l'INSERT IGNORE viene eseguito correttamente.

Alla seconda esecuzione l'UPDATE viene eseguito, ed anche l'INSERT IGNORE che crea una seconda riga nella tabella. Penso che ciò avvenga perchè i valori non sono tutti uguali.

Per completezza di informazione aggiungo che i due campi `id_user` e `data` sono degli indici non potendo usare ne chiavi primarie ne uniche per ovvi motivi (entrambi i campi essere duplicati, ad esempio id_user può comparire più volte con date diverse e data può essere presente per diversi utenti) e quindi non posso usare nemmeno ON DUPLICATE KEY che funziona solo con chiavi uniche.

Se hai altri suggerimenti su come risolvere il problema saranno graditi :)

> una nota, piuttosto che CURDATE() userei
> CURRENT_DATE :)

Preso nota del suggerimento ;)

Alfredo

Options: ReplyQuote


Subject
Views
Written By
Posted
5169
January 15, 2009 11:52AM
3381
January 16, 2009 03:37AM
Re: Problema con query
3525
January 16, 2009 01:17PM
3476
January 16, 2009 05:15PM
3315
January 17, 2009 11:18AM


Sorry, you can't reply to this topic. It has been closed.

Content reproduced on this site is the property of the respective copyright holders. It is not reviewed in advance by Oracle and does not necessarily represent the opinion of Oracle or any other party.