FROM中的MS Access查询语法错误

时间:2009-06-27 17:28:31

标签: sql ms-access

对于分配,我必须编写SQL以显示客户的姓氏,订单日期,产品ID,产品结构,订购数量和单价。这必须是一个4表连接,即使可以在哪里使用,也必须使用INNERJOIN。

这些是涉及的表格。

Cus( CID ,最后,第一,电话)
订单( OrdID ,OrdDate,ShipDate,CID)
Manu( ManuID ,姓名,电话,城市)
产品( PrID ,ManuID,类别)
ProdFabric( PrID Fabric ,价格)
订单行( OrdId PrID Fabric ,数量)

粗体表示它是主键或复合键的一部分。

这是我输入的查询,但我一直在FROM和它上面遇到语法错误 由于某种原因,继续突出显示订单(在Cus INNERJOIN之后)。

SELECT Last, OrdDate, Prods.PrID, Fabric, Qty, Price  
FROM Cus INNERJOIN Orders INNERJOIN Orderline INNERJOIN ProdFabric   
ON OrderLine.PrID=ProdFabric.PrID  
AND ON Orderline.Fabric=ProdFrabric.Fabric  
AND ON Cus.CID=Orders.CID  
AND ON Orders.OrdID=Orderline.OrdID;  

是什么导致这种情况以及如何解决?

2 个答案:

答案 0 :(得分:1)

AFAIK MS Access需要类似Lisp的括号扩散来支持多个连接。

     
  • 在另一个支持paren-matching和syntax-highlighting的编辑器中编辑MS Access查询,例如:记事本++。
  •  
  • 使用表别名可以缩短查询速度并使其更易于管理。

使用括号,您的查询将如下所示:

SELECT c.Last
       , o.OrdDate
       , pf.PrID
       , pf.Fabric
       , ol.Qty
       , pf.Price
FROM   ((Cus c
       INNER JOIN Orders o ON c.CID = o.CID)
       INNER JOIN Orderline ol ON o.OrdID = ol.OrdID)
       INNER JOIN ProdFabric pf ON ol.PrID = pf.PrID;

答案 1 :(得分:0)

我不认为“AND ON”就像您在查询中使用它一样存在 您必须自己指定每个连接。

SELECT ...
FROM cus INNER JOIN orders ON cus.cid = orders.cid
         INNER JOIN orderline ON orders.orderid = orderline.orderid
...

或者您也可以在WHERE子句中指定连接:

SELECT ...
FROM cus INNER JOIN orders 
         INNER JOIN orderline
...
WHERE cus.cid = orders.cid
  AND orders.orderid = orderline.orderid
...

另外:INNER JOIN是2个单词; - )