---
title: "Rätta Quiz"
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/174753-rätta-quiz"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "MickeA.com"
published: "2008-10-14T13:58:07.000Z"
updated: "2008-10-14T16:38:21.000Z"
replies: 4
views: 464
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/databaser-sql/174753-rätta-quiz"
---

# Rätta Quiz

## #1 — MickeA.com, 2008-10-14T13:58Z

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.

Permalänk: https://www.webforum.nu/p/174753

## #2 — Peter S, 2008-10-14T15:28Z

```
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 )
```

Permalänk: https://www.webforum.nu/p/2149682

## #3 — MickeA.com, 2008-10-14T16:11Z

Tja,

Tack!
Ett litet problem dock, koden fungerar utmärkt om en användare går testet och har alla rätt. Men om nästa svarar fel, så visar ovanstående att det är 0 personer med alla rätt.

Så något ska ändras, men vad?

Permalänk: https://www.webforum.nu/p/2149687

## #4 — Peter S, 2008-10-14T16:14Z

Ett till litet villkor som skall till :)

Inlägget är redigerat.

Permalänk: https://www.webforum.nu/p/2149689

## #5 — MickeA.com, 2008-10-14T16:38Z

> **Peter S skrev:**
>
> Ett till litet villkor som skall till :)
> 
> Inlägget är redigerat.

Grymt! Tack! :)

Permalänk: https://www.webforum.nu/p/2149696

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/174753-rätta-quiz
