tags:

views:

22

answers:

1

I have a table of answers to questions:

table questionAnswers:
    user VARCHAR
    question VARCHAR
    answerValue VARCHAR

Important: Users can post multiple answers to questions

I want to collect how many questions a user has answered into a table:

table users
    user VARCHAR
    questionsAnswered INT

Important: Has to ignore multiple answers to the same question

Is there a single query that can automatically update the questionsAnswered column in the users table?

+2  A: 
UPDATE users AS u 
SET questionsAnswered = (
    SELECT COUNT(DISTINCT question) 
    FROM questionAnswers AS q 
    WHERE q.user=u.user)

This assumes that all the users in questionsAnswered already have an entry in users. (This will update users, but it won't insert any new rows.)

unutbu
Phew, thanks! Last-minute save there.
Ender