簡體   English   中英

如何使用聯接從三個表中選擇數據

[英]how to select data from three tables using joins

我想從以下三個表中選擇survey_idquestion_idquestion_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中的值時。

好吧,您可以從類似

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 s將確保您僅在有問題和答案的地方進行調查。

如果您希望返回所有調查,無論它們是否有問題或答案,或者甚至所有有問題的調查而無論答案如何,都可以使用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

您必須嘗試並記住,LEFT JOUN指出

返回左側表中的所有數據,僅返回右側中與左側匹配的數據。

看看這篇文章,它做了一個很好的圖形解釋。

SQL SERVER – JOIN的介紹– JOIN的基礎

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

我正在考慮一個問題可以有多個答案,所以我給出了答案,這樣您就可以得到答案表的所有行

 $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)";

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM