我在Chrome WebDB / 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 = ?
[results.rows.item(i).memberID,eventId],
这是我尝试但仍然只接收回答问题并且也在SurveyAnswers表中的成员。
答案 0 :(得分:2)
使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 = ?
答案 1 :(得分:1)
最近以一个维恩图的形式向我解释了联接,从那时起我就清楚地了解了在我的查询中使用哪些联接。
看一下下面链接的页面,它以相同的方式解释它,我保证你永远不需要再次检查你需要的连接!
答案 2 :(得分:1)
您需要使用LEFT OUTER连接,并且还需要在连接中指定SurveyAnswers eventID的条件,而不是在where子句中。像这样:
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 = ?
答案 3 :(得分:0)
您想使用LEFT OUTER JOIN。