即使 ID 不存在,MS Access 中的 SQL 查询

问题描述

我在 MS Access 中有 3 个表

  • 一个表保存供应商详细信息和期初余额(可能有也可能没有)
  • 第 2 个表保存了供应商进行的采购,其中存储了供应商的 ID 和 Total_Amount
  • 第三个表跟踪供应商支付的款项,其中存储了他们的 ID 和 Paid_Amount

我创建了一个查询,将表 1 中的期初余额和表 2 中的 Total_Amount 相加,并从表 3 中减去 Paid_Amount

而且只有在支付了供应商名称所反映的任何款项后,它才能正常工作。

我想要一个查询显示是否进行了任何购买或不反映供应商名称

查询是:

SELECT Sl_No,supplier_Name,SUM(opening_Balance+Total_Amount-Paid_Amount) AS TOTAL
FROM Ledger_suppliers,Transaction_Payments,Transaction_Purchases
WHERE Transaction_Payments.supplier_ID = Ledger_suppliers.Sl_No
     AND Transaction_Purchases.supplier_ID = Ledger_suppliers.Sl_No  
GROUP BY Sl_No,supplier_Name

结果是:

here

解决方法

假设我正确理解了您的问题,您遇到的问题是 Ledger_Suppliers 表中可能没有供应商。我在下面所做的是首先创建一个获取 Transaction_Payments - Transaction_Purchases 的查询,然后创建一个第二个查询,该查询使用 Ledger_Suppliers 表进行查询。为了解决 Ledger_Suppliers 中没有供应商的问题,如果值为 null(即它不在表中),我将其值设置为 0:

Nz(Ledger_Suppliers.Opening_Balance)

同样,我将供应商名称设置为“NA”。

查询 1:

SELECT Transaction_Payments.Supplier_ID,Sum(Transaction_Payments.Paid_Amount-Transaction_Purchases.Total_Amount) AS Total
FROM Transaction_Payments INNER JOIN Transaction_Purchases ON Transaction_Payments.Supplier_ID = Transaction_Purchases.Supplier_ID
GROUP BY Transaction_Payments.Supplier_ID;

查询 2:

SELECT SumPaymentsPurchases.Supplier_ID AS Sl_No,Nz(Ledger_Suppliers.Supplier_Name,"NA") AS Supplier_Name,SUM(SumPaymentsPurchases.Total + Nz(Ledger_Suppliers.Opening_Balance)) AS TOTAL
FROM SumPaymentsPurchases LEFT JOIN Ledger_Suppliers ON SumPaymentsPurchases.Supplier_ID = Ledger_Suppliers.Sl_No
GROUP BY SumPaymentsPurchases.Supplier_ID,"NA")