2014-02-11 3 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'; 

и получение повторяющихся значений для qu но я хочу только отдельный вопрос со всеми его ответами.

+0

Итак, вы хотите, чтобы найти ответы на все вопросы от всех пользователей для конкретного вопроса? –

+0

Вот как работает левое соединение. Если вы хотите получить ответы на все вопросы, у вас будут повторяющиеся данные для каждого объединенного ответа. – Hast

+0

@Desolator Sir yes Я хочу, чтобы все ответы всех пользователей на конкретный вопрос. – 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, идентификатор "конкретного вопроса" найти все ответы. Чтобы найти все вопросы ответы, вам нужно перебрать все 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 
} 
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

Это не приведет к отдельным значениям вопросов –

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

Вы не можете получить один раз Question, если вы используете соединение. Вы получаете вопрос для каждого ответа. Итак, если у вопроса есть 5 ответов, вы получаете 5 строк с пятью разными вопросами и каждым ответом. Если у вас есть дубликаты ответов. Вы можете уменьшить результат за DISTINCT

SELECT DISTINCT ...

0

Для этого вам нужно сделать 2 querys.

Один вопрос и прочее со всеми ответами. С заявлением JOIN вы всегда получаете один вопрос за ответ (если у вас есть 3 ответа, верните тот же вопрос 3).

Попробуйте сделать для каждого вопроса:

"SELECT * FROM answer WHERE question_id = ". $question_id; 
Смежные вопросы