2014-02-11 43 views
0

我有兩個表:加入的重複值

  • Question (question_id, std_div_sub_id, question, level)
  • answer (Ans_id, question_id, answer, iscorrect, correct_mrk,negative_mrk)

多個答案的問題,正確的答案設置iscorrect爲1和我使用下面的查詢:

select * from question join answer 
    on answer.question_id = question.question_id 
    where question.type='$qtype' 
    and question.std_div_sub_id='$std_div_sub_val'; 

並獲取重複的值但我只希望所有答案都有明確的問題。

+0

所以你要找到所有用戶的所有回答特定問題? – 2014-02-11 10:32:20

+0

這就是左連接的工作原理。如果您想爲每個問題獲得所有答案,您將爲每個參加答案都有重複的問題數據。 – Hast

+0

@Desolator先生是我想要所有用戶針對特定問題的所有答案。 – iDhavalVaja

回答

0

我想你的意思是這樣的:

function get_answers($input_question_id) 
{ 
    $sql = <<<_END 
    SELECT Ans_id, a.question_id, answer, iscorrect, correct_mrk,negative_mrk 
    FROM answer a, question q 
    WHERE a.question_id = q.question_id AND a.question_id = $input_question_id 
     AND q.type='$qtype' 
     and q.std_div_sub_id='$std_div_sub_val'; 
_END; 
    return mysql_query($sql); 
} 

請注意,您需要輸入$input_question_id,在 「特定問題」 的id找到它的所有答案。 要找到所有問題的答案,你需要遍歷所有question行,每次路過的功能ID:

$result = mysql_query("SELECT question_id FROM question"); 
$len = mysql_row_count($result); 
for ($i = 0; $i < $len; ++$i) 
{ 
    $question_id = mysql_result($result, $i, 0); 
    $ans = get_answers($id); // answers to the current question 
} 
0

使用DISTINCT得到不同的值:

SELECT DISTINCT FROM question JOIN answer  
ON answer.question_id = question.question_id  
WHERE question.type='$qtype'  
AND question.std_div_sub_id='$std_div_sub_val'; 
+0

這不會產生不同的問題值 – 2014-02-11 10:35:53

0
You should use the following query with inner join. 

select distinct from question 
    inner join answer on answer.question_id = question.question_id 
    where question.type='$qtype' 
    and question.std_div_sub_id='$std_div_sub_val'; 
+0

先生有錯誤:_您的SQL語法中有錯誤;檢查手冊,對應於您的MySQL服務器版本的正確的語法使用附近的'*)問題內部連接答案answer.question_id = question.question_id'_ – iDhavalVaja

+0

Dhaval我編輯答案實際上,你必須選擇不同的行與內加入。你會得到你想要的結果。 –

-1

,如果你使用的是加入你不能讓這個問題一倍。你得到每個答案的問題。 所以如果一個問題有5個答案,你會得到5個問題和每個答案的5倍。 如果您有重複的答案。您可以收縮每個不同的

的結果

SELECT DISTINCT ...

0

爲此,你需要做2個querys。

一個問題和其他所有的答案。 隨着JOIN聲明你總是得到每個答案一個問題(如果你有3個答案,返回相同的3個問題)。

嘗試做每一個問題:

"SELECT * FROM answer WHERE question_id = ". $question_id;