我有3个表,客户,产品,交易。 当我们输入产品时,将获得与客户和交易表相关的PID(产品ID)和CID(客户ID)。交易记录表具有CID和数量。
我正在尝试列出所有唯一的产品和数量,有些客户有2个相同产品的列表,所以如果1个是10个单位,另一个是20个,则该客户有30个产品。
交易表列出了所有销售额,总销售额中减去了这些销售额。 我需要查询以显示产品名称,客户名称,可用数量。 这是我到目前为止拥有的代码,对于混乱情况表示歉意,非常感谢您的任何帮助。
这是一个Access数据库。
SELECT Min(Products.PID) exPID,
Min(Products.[Product Name]) AS exProdName,
Min(Products.[Seller Asking]) AS exAsking,
Min(Products.CID) AS exClientID,
Min(Transactions.[CID Seller]) AS exSellerID,
Sum(Products.Quantity - ((SELECT Transactions.[No Units], Clients.Name,
Transactions.[CID Seller], Products.CID
FROM Transactions, Clients, Products
WHERE Transactions[CID Seller]=Products.CID)
) AS exSumofTrans),
Min(Clients.Name) AS exClientName,
Min(Transactions.[CID Seller]) AS exSeller
FROM Transactions, Clients, Products
WHERE (((Transactions.[CID Seller])=[Products].[CID]
AND (Products.[PID])=([Transactions].[PID])));
第一个问题是内部选择错误。
错误提示:
查询表达式中的'语法错误(Sum(Products.Quantity-(((Select Transactions。[No Units],Clients.Name,Transactions。[CID Seller],Products.CID 来自交易,客户,产品 其中Transactions [CID卖方] = Products.CID))作为exSumofTrans)'。
答案 0 :(得分:0)
我不得不根据您要尝试做的事情进行猜测,并且我无法对其进行测试,因此可能需要进一步调整,但这将使您走上正确的道路:
SELECT Products.PID AS exPID,
FIRST(Products.[Product Name]) AS exProdName,
FIRST(Products.[Seller Asking]) AS exAsking,
FIRST(Products.CID) AS exClientID,
SUM(Products.Quantity)-FIRST(T.exNoUnits) AS exSumofTrans,
T.exSellerID,
FIRST(Clients.Name) AS exClientName
FROM (Products
INNER JOIN (SELECT [CID Seller] AS exSellerID, PID, SUM([No Units]) AS exNoUnits
FROM Transactions GROUP BY [CID Seller], PID) AS T
ON T.PID=Products.PID)
INNER JOIN Clients ON T.exSellerID=Clients.CID
GROUP BY Products.PID, T.exSellerID