Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 我想联接表,但即使另一个表没有结果,也仍然会从一个表接收结果_Sql_Sqlite - Fatal编程技术网

Sql 我想联接表,但即使另一个表没有结果,也仍然会从一个表接收结果

Sql 我想联接表,但即使另一个表没有结果,也仍然会从一个表接收结果,sql,sqlite,Sql,Sqlite,我在ChromeWebDB/SQLite中做这件事 我有一个成员表和一个答案表,一个成员可能回答,也可能没有回答 我正在尝试返回一个结果集,其中包括成员名称和他们给出的答案。。但如果他们不回答,我仍然希望他们的名字能回来 有人能帮我吗 SELECT m.LastName, m.FirstName, m.MiddleName, s.surveyAnswer FROM Members m LEFT JOIN SurveyAnswers s

我在ChromeWebDB/SQLite中做这件事

我有一个成员表和一个答案表,一个成员可能回答,也可能没有回答

我正在尝试返回一个结果集,其中包括成员名称和他们给出的答案。。但如果他们不回答,我仍然希望他们的名字能回来

有人能帮我吗

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子句中的联接表有效地将外部联接转换为内部联接。