0

次の3つの表からsurvey_id、、、question_idを選択したいと思いますquestion_textanswer_id

SurveyTableには、次のものがあります。

Survey{survey_id,survey_title}

QuestionTableに私は持っています:

Question{survey_id,question_id,question_text}

AnswerTableの場合:

Answer{question_id,answer_id,answer_text}

結合を使用してこれらのテーブルから選択したいと思います。survey_idがQuestionTableおよびSurveyTableの値と等しい場合。

4

3 に答える 3

3

さて、あなたは次のようなものから始めることができます

SELECT  s.survey_id ,  
        q.question_id, 
        q.question_text, 
        a.answer_id,
        a.answer_text
FROM    Survey s INNER JOIN
        Question q  ON  s.survey_id = q.survey_id INNER JOIN
        Answer a    ON  q.question_id = a.question_id

INNER JOIN、利用可能な質問と回答がある場合にのみ調査を行うことを保証します。

質問または回答があるかどうかに関係なく、すべての調査を返したい場合、または回答に関係なく質問があるすべての調査を返す場合は、LEFT JOINS

SELECT  s.survey_id ,  
        q.question_id, 
        q.question_text, 
        a.answer_id,
        a.answer_text
FROM    Survey s LEFT JOIN
        Question q  ON  s.survey_id = q.survey_id LEFT JOIN
        Answer a    ON  q.question_id = a.question_id

LEFTJOUNが述べていることを覚えておく必要があります

左側のテーブルからすべてのデータを返し、左側のthosに一致する右側のデータのみを返します。

この記事を見てください、それは素晴らしいグラフィカルな説明をします。

SQL SERVER – JOINの概要–JOINの基本

于 2012-07-30T04:28:37.697 に答える
0
select  
    survey.survey_id , 
    question.question_id,
    question.question_text,
    answer.answer_id
from survey 
left join question on question.survey_id = survey.survey_id 
left join answer on answer.question_id = question.question_id
于 2012-07-30T04:27:51.100 に答える
0

質問には複数の回答が含まれる可能性があると考えているので、回答テーブルのすべての行を取得できるように回答を提供しました

 $select = "SELECT a.answer_id,a.answer_text,q.question_id, q.question_text,s.survey_id,s.survey_title FROM Answer a "
        . "LEFT JOIN Question q ON (a.question_id = q.question_id) "
        . "LEFT JOIN Survey s ON (q.survey_id = s.survey_id)";
于 2012-07-30T04:31:31.920 に答える