在编写我自己的SQL查询时,MS Access一直在扼杀我,我讨厌它的GUI查询工具。我放弃了试图结合LEFT JOINS和INNER JOINS,现在我正在做所有的内部联接,我仍然被谋杀。有人可以链接到我一个易于理解的MS Access SQL指南和/或告诉我这里我做错了什么。我已经尝试将我的代码放在括号中,将我的字段括起来。我的智慧结束了。
SELECT answers.*
FROM (((answers
INNER JOIN caseInfo
ON answers.[ABAWDNum] = caseinfo.[ABAWDNum])
INNER JOIN Questions)
ON answers.[questionID] = questions.[questionID])
INNER JOIN responseCodes
ON answers.[responseIDCode] = responseCodes.[responsecode]
我不确定我的错误图片是否会出现,但它在FROM子句中显示Sytnax错误,并且在提到问题表之后它有正确的括号 enter image description here
编辑:数据库关系: enter image description here
答案 0 :(得分:1)
我相信这会为您提供符合您加入条件的表格答案中的所有字段。
SELECT answers.*
FROM answers
INNER JOIN caseInfo
ON answers.[ABAWDNum] = caseinfo.[ABAWDNum]
INNER JOIN Questions
ON answers.[questionID] = questions.[questionID]
INNER JOIN responseCodes
ON answers.[responseIDCode] = responseCodes.[responsecode]
答案 1 :(得分:1)
Access INNER JOIN一次只能处理两个数据集,因此如果要连接两个以上的表,则必须使用括号嵌套INNER JOINS,如下所述:
从该页面上可以看出执行此操作的语法是......
SELECT fields FROM table1 INNER JOIN (table2 INNER JOIN [( ]table3 [INNER JOIN [( ]tablex [INNER JOIN …)] ON table3.field3compoprtablex.fieldx)] ON table2.field2compoprtable3.field3) ON table1.field1compoprtable2.field2;
答案 2 :(得分:0)
只是幽默访问我使用GUI /设计模式来构建查询。
这是我运行的查询。从一个包含674条记录的表中,它只返回了6个答案,但这是一个我必须处理的单独问题。至少这件事情有效。
但是我有一种感觉,一旦我开始要求左联合,我就遇到了麻烦。 < _< F *访问。
SELECT answers.*
FROM (Questions
INNER JOIN (CaseInfo
INNER JOIN answers ON CaseInfo.ABAWDNum = answers.ABAWDNum)
ON Questions.questionID = answers.questionID)
INNER JOIN responseCodes ON (Questions.questionID = responseCodes.questionCode)
AND (answers.responseIDCode = responseCodes.responseCode);
修改强>:
我再次使用GUI / Designer尝试进行更接近我需要的查询,这是答案表中的所有答案加上问题表,caseinfo表和响应码表中的一些内容,这就是我得到的
SELECT
CaseInfo.ABAWDNum, CaseInfo.Admin, CaseInfo.Unit,
CaseInfo.[ASV-DRV Completed By], CaseInfo.reviewerID, CaseInfo.[Recieved Date],
CaseInfo.[Date Reviewed],
Questions.Question,
answers.responseIDCode, responseCodes.responseDescription, answers.comments
FROM
CaseInfo
RIGHT JOIN
((Questions
RIGHT JOIN
answers ON Questions.questionID = answers.questionID)
LEFT JOIN
responseCodes ON answers.responseIDCode = responseCodes.responseCode)
ON CaseInfo.ABAWDNum = answers.ABAWDNum;
这真的很疯狂。我真的很难学习这个。看起来访问非常特别关于它是如何加入的,但这似乎给了我正确的结果。返回了674条记录。