在MS Access中通过多个字段连接两个表

时间:2016-02-04 14:54:53

标签: ms-access

我有两张桌子。一个列出了我的商店的客户编号,他们购买的商品,他们购买的日期以及他们支付的价格。

我有第二张表,其中列出了我的商店的客户编号,他们退回的物品,他们退回的日期以及他们收到的信用额。

显然,并非所有销售都有积分。

我想返回看起来像的结果:

Customer1, Item1, Date, Price, Blank
Customer1, Item2, Date, Price, Credit
Customer1, Item3, Date, Price, Blank
Customer1, Item4, Date, Price, Blank
Customer2, Item1, Date, Price, Blank
Customer2, Item2, Date, Price, Blank
Customer2, Item3, Date, Price, Credit

如果我加入客户编号的表格,它会返回我:

Customer1, Item1, Date, Price, Credit
Customer1, Item2, Date, Price, Credit
Customer1, Item3, Date, Price, Credit
Customer1, Item4, Date, Price, Credit
Customer2, Item1, Date, Price, Credit
Customer2, Item2, Date, Price, Credit
Customer2, Item3, Date, Price, Credit

如果我加入项目的表格并按客户编号排序,则会返回gobbledygook。

我的想法是加入客户编号并在条件中使用IIf(Sales.Item1=Credits.Item1, Credit, 0),但我收到错误“您试图执行查询...这不是聚合表达式的一部分。”

我做错了什么?

1 个答案:

答案 0 :(得分:1)

假设您没有返回而没有销售,请尝试以下查询:

SELECT Sales.Customer, Sales.Item, Sales.Sale_Date, Sales.Sale_Price, 
   Credits.Credit_Date, Credits.Credit_Price, 
   IIf(IsDate([Credits].[Credit_Date]),"Credit","Blank") AS Result 
   FROM Sales LEFT JOIN Credits ON (Sales.Customer = Credits.Customer) 
   AND (Sales.Item = Credits.Item);

根据需要在IIF语句( Credit Blank )中定义您的值。 您还可以隐藏您的字段Credits.Credit_Date,Credits.Credit_Price,因此输出将完全符合您的要求。

相关问题