Sql 我想联接表,但即使另一个表没有结果,也仍然会从一个表接收结果
我在ChromeWebDB/SQLite中做这件事 我有一个成员表和一个答案表,一个成员可能回答,也可能没有回答 我正在尝试返回一个结果集,其中包括成员名称和他们给出的答案。。但如果他们不回答,我仍然希望他们的名字能回来 有人能帮我吗Sql 我想联接表,但即使另一个表没有结果,也仍然会从一个表接收结果,sql,sqlite,Sql,Sqlite,我在ChromeWebDB/SQLite中做这件事 我有一个成员表和一个答案表,一个成员可能回答,也可能没有回答 我正在尝试返回一个结果集,其中包括成员名称和他们给出的答案。。但如果他们不回答,我仍然希望他们的名字能回来 有人能帮我吗 SELECT m.LastName, m.FirstName, m.MiddleName, s.surveyAnswer FROM Members m LEFT JOIN SurveyAnswers s
SELECT m.LastName,
m.FirstName,
m.MiddleName,
s.surveyAnswer
FROM Members m
LEFT JOIN SurveyAnswers s
ON s.memberID = m.id
WHERE m.id = ?
AND s.eventID = ?
[结果.行.项(i).成员ID,事件ID]
这是我尝试的,但仍然只接收回答问题的成员,并且也在SurveyAnswers表中。您想使用a。您想使用a。将
s.eventID
作为联接的一部分,而不是WHERE
子句
您的select语句应该更像这样:
SELECT m.LastName,
m.FirstName,
m.MiddleName,
s.surveyAnswer
FROM Members m
LEFT JOIN SurveyAnswers s
ON s.memberID = m.id
AND s.eventID = ?
WHERE m.id = ?
SELECT m.LastName, m.FirstName, m.MiddleName, s.surveyAnswer FROM Members m
LEFT OUTER JOIN SurveyAnswers s ON (s.memberID = m.id AND s.eventID = ?)
WHERE m.id = ?
使
s.eventID
成为联接的一部分,而不是WHERE
子句
您的select语句应该更像这样:
SELECT m.LastName,
m.FirstName,
m.MiddleName,
s.surveyAnswer
FROM Members m
LEFT JOIN SurveyAnswers s
ON s.memberID = m.id
AND s.eventID = ?
WHERE m.id = ?
SELECT m.LastName, m.FirstName, m.MiddleName, s.surveyAnswer FROM Members m
LEFT OUTER JOIN SurveyAnswers s ON (s.memberID = m.id AND s.eventID = ?)
WHERE m.id = ?
连接最近以维恩图的形式向我解释,从那时起,我就非常清楚在我的查询中使用哪些连接 看看下面链接的页面,它以同样的方式解释了这一点,我保证你再也不需要检查你需要的加入
连接最近以维恩图的形式向我解释,从那时起,我就非常清楚在查询中使用哪些连接 看看下面链接的页面,它以同样的方式解释了这一点,我保证你再也不需要检查你需要的加入
您需要使用左外部联接,还需要在联接中而不是在where子句中指定SurveyAnswers eventID的条件。大概是这样的:
SELECT m.LastName,
m.FirstName,
m.MiddleName,
s.surveyAnswer
FROM Members m
LEFT JOIN SurveyAnswers s
ON s.memberID = m.id
AND s.eventID = ?
WHERE m.id = ?
SELECT m.LastName, m.FirstName, m.MiddleName, s.surveyAnswer FROM Members m
LEFT OUTER JOIN SurveyAnswers s ON (s.memberID = m.id AND s.eventID = ?)
WHERE m.id = ?
您需要使用左外部联接,还需要在联接中而不是在where子句中指定SurveyAnswers eventID的条件。大概是这样的:
SELECT m.LastName,
m.FirstName,
m.MiddleName,
s.surveyAnswer
FROM Members m
LEFT JOIN SurveyAnswers s
ON s.memberID = m.id
AND s.eventID = ?
WHERE m.id = ?
SELECT m.LastName, m.FirstName, m.MiddleName, s.surveyAnswer FROM Members m
LEFT OUTER JOIN SurveyAnswers s ON (s.memberID = m.id AND s.eventID = ?)
WHERE m.id = ?
left-outer-join
与left-join
相同。我知道我做错了什么。。“和s.eventID”阻止左外部联接正常工作。。。我想我得把它们全部返回,然后对结果进行筛选。left-outer-join
与left-join
相同。我知道我做错了什么。。“和s.eventID”阻止左外部联接正常工作。。。我想我必须返回所有的连接并筛选结果。进一步解释:WHERE子句中左侧(外部)连接表上的条件有效地将外部连接转换为内部连接。进一步解释:左侧(外部)连接表上的条件WHERE子句中的联接表有效地将外部联接转换为内部联接。