![](/img/trans.png)
[英]How to select data from multiple tables using joins/subquery properly? (PHP-MySQL)
[英]how to select data from three tables using joins
我想从以下三个表中选择survey_id
, question_id
, question_text
和answer_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指出
返回左侧表中的所有数据,仅返回右侧中与左侧匹配的数据。
看看这篇文章,它做了一个很好的图形解释。
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.