2016-04-05 9 views
2

私はできる限りこれを説明しようとします。 私は、人がカードを使用するプログラムをやろうとしています。SQLで以前の値を取得するには?

私は、人がカードを使用し、最後の時間の時間を確定するには、次のコードを使用:

UPDATE cartao SET horaSaida = CURTIME() WHERE cartao.idCartao = 1 

私はカードを使用するときに、現時点ではhoraEntradahoraSaidaの両方が同じ値を持っています。 horaEntradaに初めてカードを使用したときの値を持つようにする必要があります。私はCASEを使用しようとしましたが、論理的な問題であれば分かりません。

+0

「horaEntrada」は最初にカードを使用したときに最初に(まさに上のように)、horaSalidaのみを使用するカードを2回目に使用します。あるいは、私はその質問を理解できなかったかもしれません。 –

+1

はい、今私はそれを行う方法を知っていると思います。私は今それを試してみるつもりです、それが解決されるかどうかは後で言います。 @IrinaAvram – fabimetabi

+0

MySQLの[自動初期化と更新(TIMESTAMPとDATETIMEの場合)](http://dev.mysql.com/doc/refman/5.7/en/timestamp-initialization.html)もご覧ください。 docsでは、あなたのような用途について幅広く議論しています。そして、私のことを信じて、ここには事件は必要ない。 – syck

答えて

1

ねえ、あなたはテーブル "cartao"で3つの列(horaEntrada、horaSaida)を作ることができます。初めての人のための

はあなたが唯一の「horaSaida」欄に

UPDATE cartao SET horaSaida = CURTIME() WHERE cartao.idCartao = person ID; 

そうを更新する必要があり、この

insert into cartao (horaEntrada,horaSaida) values (CURTIME(),CURTIME()); 

ユーザーがそれを使用する第2の時間のような行を挿入する必要があるカードを使用しています"horaEntrada"にはおしゃべり時間があり、 "horaSaida"には最後の時間があります。

+0

私はすでに、同じ値を持つ 'horaEntrada'と' horaSaida'の両方を持っていました。問題は 'horaEntrada'を最初の値に変更する方法、または変更しない方法でした。私は 'CASE'や他のものを使うべきですか?しかし、今私はそれを行う方法を知っていると思う、ありがとう@vishu。 – fabimetabi

+0

あなたはちょうどあなたが望むものをもう一度xplainすることができます – vishu

+0

私は 'horaEntrada'を、例えば私がカードを初めて使う午前10時などにします。そして、「horaSaida」は2度目の午前12時です。そして今、私はこのコードの動作作ってみました:。 'CASE 'horaEntrada' = 0 THEN 'horaEntrada' = CURTIME() 'cartao' 'をidCartao' = '$のID' ELSE 'horaSaida' =をCURTIME()WHERE 'cartao'。 'idCartao' = '$ id' END' しかし、それは私に 'CASE'でエラーを与えています(認識できない文章タイプ[near' CASE'])。 – fabimetabi

関連する問題