我有一个问题,我似乎无法在一连串失败的尝试后找出问题。在另一个表中不存在记录的连接上选择null
我有三张表,我需要做一些报告加入,并在第二个表中可能不存在记录。如果记录不存在,我需要为来自第三个表的数据报告空值。
在最基本的形式,这里是表结构(这是一个调查)
Table A (Survey) ----------------------- SurveyNumber | SurveyId 016243023708 1152010 Table B (Response) ---------------------------------- SurveyId | QuestionId | ResponseId 1152010 1279235 486 Table C (Response Values) -------------------- ResponseId | Value 486 Yes
要解释为什么一个记录在表B中可能不存在完全是因为值插入作为调查是完成。如果用户离开调查没有完成(他们可以稍后再回来),表B中的记录将不会在那里。表C中的值应该报告为null。
如果它使任何容易,我需要做的专门为questionid 1279235.
这是查询我拿出迄今报告(它显示我的一切,但调查与丢失记录在问题1279235的表b中)。
SELECT A.SurveyNumber, A.SurveyId, B.QuestionID, C.Value
FROM tblA A
LEFT JOIN tblB B
ON A.SurveyId = B.SurveyId
LEFT JOIN tblC C
ON B.ResponseId = C.ResponseId
WHERE B.QuestionId = 1279235
如果需要,我可以提供更多的说明。
在此先感谢
当你把一个过滤器上的外部表在哪里子句,你已经变成了t他外部连接成一个内部连接。过滤外部表的正确方法是将过滤条件设置为连接的一部分,而不是位置。我认为这两个答案都能正确做到。 –