2016-04-05 10 views
2

Ich werde versuchen, dies so gut wie möglich zu erklären. Ich versuche, ein Programm zu machen, wo eine Person eine Karte benutzt, und es registriert die Zeit, wenn sie das tut.Wie bekomme ich meinen vorherigen Wert auf sql?

verwendete ich den folgenden Code, um die Stunde der letzten Zeit eine Person verwendet, die Karte zu bestimmten:

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

Also im Moment, als ich die Karte verwenden beide horaEntrada und horaSaida den gleichen Wert haben. Ich muss horaEntrada drehen, um den Wert des ersten Mal zu haben, dass eine Person die Karte benutzte. Ich habe versucht, CASE zu verwenden, aber ich habe nicht viel damit gemacht, denn wenn es ein logisches Problem ist, verstehe ich es nicht.

+0

Gut gesetzt 'horaEntrada' zuerst (genau wie oben), wenn die Person die Karte zum ersten Mal verwendet, und das zweite Mal, wenn die Person die Karte verwendet, setzen Sie nur' horaSalida'. Oder vielleicht habe ich die Frage nicht verstanden. –

+1

Ja, jetzt denke ich, ich weiß, wie es geht. Ich werde es jetzt versuchen, ich sage, ob es gelöst ist oder nicht. @ IrinaAvram – fabimetabi

+0

Sie können sich auch die [Automatische Initialisierung und Aktualisierung für TIMESTAMP und DATETIME] (http://dev.mysql.com/doc/refman/5.7/en/timestamp-initialization.html) von MySQL ansehen Dokumente, in denen Anwendungen wie Ihre ausführlich diskutiert werden. Und glauben Sie mir, keine Notwendigkeit für CASE ... WANN hier. – syck

Antwort

1

Hey können Sie machen drei Spalten (horaEntrada, horaSaida) in der Tabelle "Cartao".

zum ersten Mal Person verwendet die Karte, die Sie die Zeile wie dieses

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

einfügen müssen, wenn der Benutzer verwendet es zweite Mal, wenn Sie nur „horaSaida“ -Spalte

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

so aktualisieren müssen dass "horaEntrada" die erste Zeit hat und "horaSaida" das letzte Mal.

+0

Ich hatte bereits 'horaEntrada' und' horaSaida' mit den gleichen Werten. Das Problem war, wie man "horaEntrada" auf den ersten Wert, den es hatte, umstellt oder es nicht ändert. Wie sollte ich 'CASE' oder etwas anderes verwenden? Aber jetzt denke ich, ich weiß, wie es geht, danke @vishu. – fabimetabi

+0

können Sie ein wenig mehr, was Sie genau wollen – vishu

+0

Ich will 'horaEntrada' zum Beispiel 10.00 Uhr sein, das erste Mal, wenn ich die Karte benutze. Und 'horaSaida' zum zweiten Mal um 12:00 Uhr. Und jetzt habe ich versucht, diesen Code Arbeit zu machen. 'CASE WHEN 'horaEntrada' = 0 THEN 'horaEntrada' = CURTIME() WHERE 'cartao' 'idCartao' = '$ id' ELSE 'horaSaida' = CURTIME() WHERE "cartao". "IdCarto" = "$ id" END' Aber es gibt mir einen Fehler bei 'CASE' (nicht erkannter Statment-Typ. [In der Nähe von' CASE']). – fabimetabi

Verwandte Themen