LEFT JOIN(SELECT)语法错误来自子句

时间:2013-08-20 14:06:37

标签: sql ms-access

有人能指出这个sql语句中的错误吗?

SELECT CommTypes.Description, Intro.[Percent]
FROM CommTypes
LEFT JOIN 
(
    SELECT * 
    FROM IntroducerBasis 
    WHERE IntroducerBasis.IntroducerCode='AG' 
       AND IntroducerBasis.BasisNumber=1
) AS Intro
ON CommTypes.ID = Intro.CommTypeID;

该错误突出显示后续的SELECT语句作为错误的来源。

错误是“来自子句的语法错误”

4 个答案:

答案 0 :(得分:2)

好吧,既然你只是从父表中返回一个值,为什么还需要子查询呢?

但是,请尝试在子查询中指定列而不是*

SELECT CommTypes.Description
FROM CommTypes
LEFT JOIN (
    SELECT 
    field1,
    field2
    FROM IntroducerBasis 
    WHERE IntroducerCode='AG' AND BasisNumber=1) AS Intro
ON CommTypes.ID = Intro.CommTypeID;

答案 1 :(得分:0)

我不确定在MS-ACCESS中是否允许使用select语句的那种类型的连接。 试试这个:

SELECT CommTypes.Description, IntroducerBasis.Percent
FROM CommTypes
LEFT JOIN IntroducerBasis 
   ON CommTypes.ID = IntroducerBasis.CommTypeID
   AND IntroducerBasis.IntroducerCode='AG' 
   AND IntroducerBasis.BasisNumber=1;

答案 2 :(得分:0)

SELECT CommTypes.[Description], Intro.[Percent]
FROM CommTypes
LEFT JOIN 
(
    SELECT * 
    FROM IntroducerBasis 
    WHERE IntroducerBasis.IntroducerCode='AG' 
       AND IntroducerBasis.BasisNumber=1
) AS Intro
ON CommTypes.ID = Intro.CommTypeID

Percent是一个保留关键字,如果您的字段必须与某些关键字命名相同,只需将它们包装在方括号中,以便区分它们。

答案 3 :(得分:0)

这似乎是一个访问限制,因为在访问和加入中创建子查询可以很好地工作。