2015-09-19 19 views
0

我有LEFT JOIN查询正在SQL工作,但当我试图查询MDB数据库它没有工作的问题。女士访问 - 缺少运营商(左连接)

这就是:

Select PH.[ID], PH.[SText], PH.[Datum] ,PHpol.[SText], PHpol.[Mnozstvi], PHpol.[kcJedn], PHpol.[RelSzDPH], PHpol.[SDph], skst.[ID] 
from PH LEFT JOIN PHpol ON PH.[ID] = PHpol.[RefAg] 
LEFT JOIN Skz ON PHpol.[RefSKz] = Skz.[ID] 
LEFT JOIN Skst ON Skz.[RefStruct] = Skst.[ID] 
WHERE RelforUh = 2 
AND RelCr=43 
AND Datum BETWEEN #2015-01-01# AND #2015-09-01# 

希望这些信息足以用于识别问题。

在此先感谢!

回答

0

在MS Access,您需要括号多个联接:

Select PH.[ID], PH.[SText], PH.[Datum] ,PHpol.[SText], PHpol.[Mnozstvi], PHpol.[kcJedn], PHpol.[RelSzDPH], PHpol.[SDph], skst.[ID] 
from ((PH LEFT JOIN 
     PHpol 
     ON PH.[ID] = PHpol.[RefAg] 
    ) LEFT JOIN 
     Skz 
     ON PHpol.[RefSKz] = Skz.[ID] 
    ) LEFT JOIN 
    Skst 
    ON Skz.[RefStruct] = Skst.[ID] 
WHERE RelforUh = 2 AND RelCr=43 AND 
     Datum BETWEEN #2015-01-01# AND #2015-09-01# 
0

MS-Access您需要添加parentheses,如果你要多于两个表查询。结构是这样的..

语法,当你有两个表

Select <column list> 
From Table1 Join Table2 
on Table1.Col = Table2.col 
where <your conditions> 

语法两个以上的表

Select <column list> 
From (Table1 Join Table2 
on Table1.Col = Table2.col) 
Join Table3 on Table2.col = Table3.col 
where <your conditions> 

()请确保无论写在里面,作为表格。如果你有更多的表格,那么你可以以同样的方式加入它们。您可以阅读更多关于在MS-Access中加入多个表格here.

那么您可以按照以下方式重新编写您的查询。

Select PH.[ID], PH.[SText], PH.[Datum] ,PHpol.[SText], PHpol.[Mnozstvi], PHpol.[kcJedn], PHpol.[RelSzDPH], PHpol.[SDph], skst.[ID] 
from ((PH LEFT JOIN PHpol ON PH.[ID] = PHpol.[RefAg]) 
LEFT JOIN Skz ON PHpol.[RefSKz] = Skz.[ID]) 
LEFT JOIN Skst ON Skz.[RefStruct] = Skst.[ID] 
WHERE RelforUh = 2 
AND RelCr=43 
AND Datum BETWEEN #2015-01-01# AND #2015-09-01#