2014-01-20 4 views
-1

내 웹 사이트에는 사용자가 한 번에 하나의 질문에만 답변 할 수있는 페이지가 있습니다. 제공된 질문은 질문 테이블에 저장됩니다. 사용자가 질문에 대답하면 답변 테이블에 저장됩니다. 질문에 답한 후 다음 질문으로 이동합니다.DB에서 행을 선택하기위한 SQL

내 코드가 작동하는 방식 지금은 질문 테이블에서 질문을 선택한 다음 답변 테이블 WHERE answers.id IS NULL을 조인합니다. 이 문제는 사용자가 응답 한 경우도 확인 필요 제외하고

가 나는 그것이 일을해야 할 방법은, 위의 유사하다 (사용자가.이 질문에 대답하지 않은), 그리고 돈이있는 경우 그것을 표시하고 사용자가 대답하지 않은 다음 질문으로 이동하십시오.

나는 내가 충분히 자신을 설명했기를 바랍니다.


나는 현재

$db = db_open(); 
$query = "SELECT 
      questions.id, 
      questions.question 
      FROM questions 
      LEFT JOIN answers ON questions.id = answers.question 
      WHERE answers.id IS NULL 
      GROUP BY questions.id"; 
$result = db_query($db,$query); 
$result = db_fetch_array($result); 
$default_question = array("id"=>$result["id"],"question"=>$result["question"]); 

질문 테이블

id question 
1 This is a question 

대답 테이블

id user question answer 
1 1  1   This is an answer 
,691을 사용하고 코드 이와
+1

이'answers.id'가 기본 키 내가 guess.correct되어 몸 이런 식으로 뭔가 더 나은 것입니까? – user2936213

+0

미안하지만 나는 당신이 원하는 것을 조금 혼란스럽게 생각합니다. 특정 사용자가 질문에 답변하지 않은 경우 표시하는 것입니까? –

+0

두 명의 사용자가 질문에 대답하고 있다고 가정 해 봅시다. 둘 다 똑같은 질문을합니다. 사용자 1이 먼저 대답하면 그는 다음 질문을 얻고 사용자 2는 여전히 첫 번째 질문에 답합니다. 그것은 그렇게 작동해야합니다. 나는 그것이 그것을 설명하는 더 쉬운 방법이라고 생각한다. –

답변

1

시도 :

$user_id = getUserIdOrSomethingLikeThat(); 
$query = "SELECT 
     questions.id, 
     questions.question 
     FROM questions 
     WHERE NOT EXISTS (
     SELECT * FROM answers WHERE answers.question = questions.id AND answers.user = $user_id 
    ) 

또한 테이블 정의를 리팩토링하는 것이 좋습니다. A 열 이름이 혼란 스럽습니다.

질문 테이블 필드 : ID, 신체

응답 테이블 필드 : 아이디, question_id 266

+0

나는 이것을 시도했다. 이중 부정입니다. answers.id가 NULL이면 사용자 ID는 왜 존재합니까? –

+0

내 첫 번째 답변을 수정했습니다. – HarryFink

+0

매력처럼 작동합니다. 고마워요! –

관련 문제