3个表到下拉列表

时间:2019-06-12 02:27:11

标签: sql ms-access select subtraction

我有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)'。

1 个答案:

答案 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