2012-03-29 10 views
1

Ich versuche, die richtige Antwort zu berechnen, die ein Benutzer erhält, und sie in der Scoretabelle zu aktualisieren. Aber es gibt mir einen lustigen kleinen Fehler.Aktualisieren eines Werts aus der Anzahl einer Unterabfrage

UPDATE score 
SET end_time = CURTIME(), final_score = COUNT(
    SELECT * 
    FROM answered 
    WHERE (exam_id = 8 and student_login = 'user' and guessed = 1) 
) 
WHERE exam_id = 8 and student_login = 'user' 

Fehler:

#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 'SELECT * FROM answered WHERE (exam_id = 8 and student_login = 'user' and gue' at line 3

Dies sollte Recht einfach genug sein? Was ist mit diesem Fehler los? Die Auswahl funktioniert alleine. und das Update funktioniert ohne das final_score-Update.

Danke für die Hilfe!

Antwort

2
UPDATE score 
SET end_time = CURTIME(), final_score = (
    SELECT COUNT(*) 
    FROM answered 
    WHERE (exam_id = 8 and student_login = 'user' and guessed = 1) 
) 
WHERE exam_id = 8 and student_login = 'user' 

Sollte es tun.

COUNT kann (so weit ich weiß) nicht mit Unterabfragen arbeiten.

1

Versuchen Sie folgendes:

UPDATE score 
SET end_time = CURTIME(), final_score = (
    SELECT COUNT(*) 
    FROM answered 
    WHERE (exam_id = 8 and student_login = 'user' and guessed = 1) 
) 
WHERE exam_id = 8 and student_login = 'user' 
+0

Echtzeit identisch Antwort :) – innovia

+0

Es ist wie die richtige Antwort sieht dann! – Chriseyre2000

+0

Auch genau das gleiche wie meins geschrieben 2 und 5 Minuten vor ..... :) – Corbin

0

dies versuchen ..

UPDATE score 
SET end_time = CURTIME(), final_score = (
    SELECT cnt=count(*) 
    FROM answered 
    WHERE (exam_id = 8 and student_login = 'user' and guessed = 1) 
) 
WHERE exam_id = 8 and student_login = 'user' 
Verwandte Themen