对于分配,我必须编写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;
是什么导致这种情况以及如何解决?
答案 0 :(得分:1)
AFAIK MS Access需要类似Lisp的括号扩散来支持多个连接。
使用括号,您的查询将如下所示:
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个单词; - )