Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/68.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中,左连接会导致Access 2010中的运行时错误_Sql_Join_Ms Access 2010 - Fatal编程技术网

在SQL中,左连接会导致Access 2010中的运行时错误

在SQL中,左连接会导致Access 2010中的运行时错误,sql,join,ms-access-2010,Sql,Join,Ms Access 2010,我很感激你能给我的任何帮助。我正在尝试使用SQL查询作为表单的记录源 strSQL = "SELECT " & DocID & " AS DocID,'" & DocumentType & "' AS DocumentType," & "B.Description AS [Decision Point], B.QCDecisionPointID,C.QCNote FROM ((QC.QCAttributeDecisionPointAsc A INNER

我很感激你能给我的任何帮助。我正在尝试使用SQL查询作为表单的记录源

strSQL = "SELECT " & DocID & " AS DocID,'" & DocumentType & "' AS DocumentType,"   & "B.Description AS [Decision Point], B.QCDecisionPointID,C.QCNote FROM ((QC.QCAttributeDecisionPointAsc A INNER JOIN QC.QCDecisionPoint B ON A.QCDecisionPointID = B.QCDecisionPointID) LEFT OUTER JOIN QC.QCResultDecisionPoint C ON C.QCDecisionPointID=B.QCDecisionPointID AND C.QCAssignmentID=" & AssignmentID & " ) WHERE QCAttributeID= " & AttributeID & ";"
但我得到的运行时错误如下: 如果我删除sql字符串中的偏旁词,那么:“查询表达式中的语法错误(mising运算符)”

如果查询中有偏执,则在Access中会出现以下错误: “不支持联接表达式”

我想是左边和中间的连接。我需要像这样的查询来获得正确的结果,请告诉我如何使用子查询来实现这一点。调试时看到的sql字符串如下所示:

SELECT 7674754 AS DocID,'All Supporting Documents' AS DocumentType,
B.Description AS [Decision Point], B.QCDecisionPointID,C.QCNote 
FROM QC.QCAttributeDecisionPointAsc A 
INNER JOIN QC.QCDecisionPoint B ON A.QCDecisionPointID = B.QCDecisionPointID 
LEFT OUTER JOIN QC.QCResultDecisionPoint C ON C.QCDecisionPointID=B.QCDecisionPointID 
AND C.QCAssignmentID=53 WHERE A.QCAttributeID= 3;

感谢您提供的任何帮助。

尝试将
和C.qcsassignmentid=53移动到WHERE子句中:

SELECT 7674754 AS DocID,'All Supporting Documents' AS DocumentType,
B.Description AS [Decision Point], B.QCDecisionPointID,C.QCNote 
FROM QC.QCAttributeDecisionPointAsc A 
INNER JOIN QC.QCDecisionPoint B ON A.QCDecisionPointID = B.QCDecisionPointID 
LEFT OUTER JOIN QC.QCResultDecisionPoint C ON C.QCDecisionPointID=B.QCDecisionPointID 
WHERE A.QCAttributeID= 3 AND (C.QCAssignmentID=53 OR C.QCAssignmentID IS NULL)

由于它是一个左连接,您需要指定您希望从C获得一个特定的值或不需要任何值(这就是为什么
或C.QCAssignmentID为NULL
是否存在)

请按照HansUp的建议将表名放在方括号中,并删除条件部分中的圆括号。试试这个:

SELECT  7674754                    AS DocID
      , 'All Supporting Documents' AS DocumentType
      , B.Description              AS [Decision Point]
      , B.QCDecisionPointID
      , C.QCNote
FROM    [QC.QCAttributeDecisionPointAsc] A
        INNER JOIN [QC.QCDecisionPoint] B
        ON      A.QCDecisionPointID = B.QCDecisionPointID
        LEFT JOIN [QC.QCResultDecisionPoint] C
        ON      C.QCDecisionPointID = B.QCDecisionPointID
        AND     C.QCAssignmentID    = 53
WHERE   A.QCAttributeID             = 3;

这是正确的,您不能在显示的联接中使用AND。你会在Where语句中得到你需要的答案吗?还要注意,当连接不止一个时,Access需要在连接周围加括号

SELECT  7674754                    AS DocID
      , 'All Supporting Documents' AS DocumentType
      , B.Description              AS [Decision Point]
      , B.QCDecisionPointID
      , C.QCNote
FROM  (  [QC.QCAttributeDecisionPointAsc] A
        INNER JOIN [QC.QCDecisionPoint] B
        ON      A.QCDecisionPointID = B.QCDecisionPointID )
        LEFT JOIN (SELECT * FROM [QC.QCResultDecisionPoint] 
                   WHERE QCAssignmentID    = 53) As C
ON      C.QCDecisionPointID = B.QCDecisionPointID
WHERE   A.QCAttributeID             = 3

谢谢你的回复。我希望我能发布一些图片来解释我的数据库结构和查询结果。但是,将其放在where子句中只会导致6条记录中的5条出现,因为其中一个类别附带了一个注释,用于AssignmentID=34。非常感谢大家的帮助。我认为是我的数据库结构出了问题…检索简单数据的查询不应该这么难处理。我遇到了以下错误:查询表达式中的语法错误(missin goperator)。where子句可以是子查询的一部分。