Search code examples
sqldatabasems-accessjoininventory

Getting ambiguity error for a inventory SQL query where two fields should be equal to make the calculation. MS-ACCESS


Having this simple group of tables, I would like to make an inventory discriminating equal products that came from different providers, but I'm getting an "ambiguity error" running a query I though it would work. I don't know how to solve this.

Here's the query I tried:

SELECT tblProducts.product_Name, 
       tblProviders.provider, 
       Nz(Sum(tblIntakes.intake_QTY),0)-
       Nz(Sum(tblExits.exit_QTY)) AS Stock

FROM tblProviders, 
     (tblProducts LEFT JOIN 
     tblExits 
     ON tblProducts.product_ID = tblExits.product_ID
     ) LEFT JOIN 
     tblIntakes 
     ON tblProducts.product_ID = tblIntakes.product_ID

GROUP BY tblProducts.product_Name, tblProviders.provider;

Solution

  • You may use subqueries in this case:

    SELECT
      tblProducts.product_Name,
      tblProviders.provider,
      Nz((
        SELECT SUM(intake_QTY)
        FROM tblIntakes
        WHERE
          tblIntakes.product_ID = tblProducts.product_ID AND
          tblIntakes.provider_ID = tblProviders.provider_ID
      ), 0) -
      Nz((
        SELECT SUM(exit_QTY)
        FROM tblExits
        WHERE
          tblExits.product_ID = tblProducts.product_ID AND
          tblExits.provider_ID = tblProviders.provider_ID
      ), 0) AS Stock
    FROM tblProviders, tblProducts;