select u.user_login
, u.user_email
, u.user_datetime
from quiz_user u
where u.user_quiz_id = <quiz-id> and
not exists ( select 1
from quiz_answer a
inner
join quiz_user_answer ua
on a.answ_id = ua.answ_answ_id
inner
join quiz_question q
on a.answ_parent = q.quis_id
where q.ques_parent = u.user_quiz_id
and a.answ_correct <> 2
and ua.answ_user_id = u.user_id )
Hej,
Har gjort ett quiz som innehåller x antal frågor med y antal svar på varje fråga.
Nu försöker jag skriva ihop en sql-fråga som ska ta reda på hur många som hittills haft alla rätt på ett quiz.
Min databas (MySQL 5.0) ser ut såhär:
[i]quiz - Varje unikt Quiz[/i]
quiz_id int(11)
quiz_unique varchar(100)
quiz_name varchar(100)
quiz_desc text
quiz_datetime int(15)
quiz_active int(1)
[i]quiz_question - Alla frågor[/i]
ques_id int(11)
ques_parent int(11)
ques_topic varchar(100)
[i]quiz_answer - Alla svar[/i]
answ_id int(11)
answ_parent int(11)
answ_topic varchar(100)
answ_correct int(1)
[i]quiz_user - Användare som genomgått ett quiz[/i]
user_id int(11)
user_quiz_id int(11)
user_login varchar(50)
user_email varchar(50)
[i]quiz_user_answer - Alla svar från resp. användare[/i]
answ_user_id int(11)
answ_quiz_id int(11)
answ_ques_id int(11)
answ_answ_id int(11)
I tabellen quiz_answer så finns kolumnen answ_correct som har värde 2 om det är det korrekta svaret.
Jag försökte med följande:
SELECT
user_login, user_email, user_datetime
FROM quiz_user
WHERE user_quiz_id = <quiz_id>
AND (
SELECT
answ_user_id
FROM quiz_user_answer
WHERE answ_answ_id = (
SELECT
answ_id
FROM quiz_answer
WHERE answ_correct = 2
AND answ_parent = (
SELECT
ques_id
FROM quiz_question
WHERE ques_parent = <quiz_id>
LIMIT 1
)
)
)
Men det fungerar inte alls, det resulterar i att alla användare som svarat minst 1 rätt kommer med.
Jag vill få ut alla användare som har ALLA rätt där <quiz_id> t.ex. är 1.
Vore tacksam av lite hjälp med det här.
