我有两张桌子:
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';
并获得问题的重复值,但我只希望得到与其所有答案截然不同的问题。
答案 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 ...