加入重复值

时间:2014-02-11 10:28:04

标签: php mysql

我有两张桌子:

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

对于多个答案问题和设置正确为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';

并获得问题的重复值,但我只希望得到与其所有答案截然不同的问题。

5 个答案:

答案 0 :(得分: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';

答案 1 :(得分: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';

答案 2 :(得分: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行,每次传递函数时都会传递该函数:

$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
}

答案 3 :(得分:0)

为此,您需要进行2次查询。

一个是问题,另一个是所有答案。 使用JOIN语句,每个答案总会得到一个问题(如果您有3个答案,则返回相同的3个问题)。

尝试为每个问题做点什么:

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

答案 4 :(得分:-1)

如果您正在使用加入,则无法获得一次该问题。你得到每个答案的问题。 因此,如果一个问题有5个答案,那么你会得到5行,同样的问题和每个答案的5倍。 如果答案中有重复项。您可以按DISTINCT缩小结果

SELECT DISTINCT ...