Joe*_*ard 7 sql syntax ms-access join parentheses
TSQL(在MS SQL Server 2000和2005中使用)允许多个JOIN子句,一个接一个,不需要逗号或括号.在Access中尝试这个并且它会抛出一个拟合:"查询表达式中的语法错误(缺少运算符)......"
从我在Google-land中收集到的内容来看,Access SQL希望使用括号对JOIN子句进行分组.关于如何实现这一点的大多数建议是使用设计视图或查询向导,并让Access找出放置括号的位置(标准SQL中不需要).问题是,我习惯于在文本编辑器(记事本,SSMS,VS2005,无论如何)中执行我的SQL,设计视图和向导会妨碍我的皮肤爬行.有时,如果有多种可能性,向导会对加入的内容做出错误的假设,并且我很习惯在TSQL中自己做这件事,我宁愿让向导离开它.
是不是有一个工具可以将TSQL转换为Access SQL,或者至少有一套规则来放置括号?
例:
SELECT ...
FROM Participant PAR
INNER JOIN Individual IND
ON PAR.APETSID = IND.APETSID
INNER JOIN Ethnicity ETH
ON IND.EthnicityID = ETH.ID
INNER JOIN Education EDU
ON IND.EducationID = EDU.ID
INNER JOIN Marital MAR
ON IND.Marital = MAR.ID
INNER JOIN Participant-Probation PXP
ON PAR.ID = PXP.ParticipantID
INNER JOIN Probation PBN
ON PXP.ProbationID = PBN.ID
INNER JOIN Class-Participant CXP
ON PAR.ID = CXP.ParticipantID
INNER JOIN Class CLS
ON CXP.ClassID = CLS.ID
INNER JOIN Official OFR
ON PAR.ReferringPO = OFR.ID
INNER JOIN Participant-Official PXO
ON PAR.ID = PXO.ParticipantID
INNER JOIN Official OFA
ON PXO.OfficialID = OFA.ID
Run Code Online (Sandbox Code Playgroud)
是的,MS-Access 很愚蠢。
我认为不存在(从 MS-SQL/TSQL 到 MS-Access 可能也不是一个巨大的市场)。通常,我使用设计视图,就我而言,它并不是真正的向导。然后,我手动添加表,然后(如果我没有创建正确的关系图,或者有些东西有点奇怪)在设计器中手动创建关系。之后,我在 SQL 视图中检查查询并根据需要进行更正。
在您的示例中(正如您所指出的),您可能需要括号,并且必须手动添加它们。你可能想要这样的东西:
SELECT ...
FROM (((Participant PAR
INNER JOIN Individual IND
ON PAR.APETSID = IND.APETSID)
INNER JOIN Ethnicity ETH
ON IND.EthnicityID = ETH.ID)
INNER JOIN Education EDU
ON IND.EducationID = EDU.ID)
INNER JOIN Marital MAR
ON IND.Marital = MAR.ID
Run Code Online (Sandbox Code Playgroud)
(如果有 N 个内部联接,则在开头需要 N-1 个左括号,在联接的所有末尾需要一个;不包括最后一个)