MS Access:对多个表进行交叉表查询(多对多关系)

时间:2018-08-23 11:35:03

标签: ms-access

我正在使用MS Access数据库。

我有三个表:

客户(idCustomer,CustomerName):

1   C1
2   C2
3   C3
4   C4
5   C5

产品(idProduct,ProductName):

1   P1
2   P2
3   P3
4   P4

订单(id,idCustomer,idProduct,数量):

1   2   1   10
2   2   2   15
3   4   2   13
4   5   4   19

我正在查询以获取此结果:

  • 行=客户(所有客户)
  • 列=产品(所有产品)
  • 单元格=数量

喜欢这个:

        P1      P2      P3      P4
C1      0       0       0       0
C2      10      15      0       0
C3      0       0       0       0
C4      0       13      0       0
C5      0       0       0       19

任何人都可以帮助完成此查询任务吗?

2 个答案:

答案 0 :(得分:4)

诀窍是:

  1. 首先建立一个常规的SELECT查询,联接3个表,该查询返回所需的列(CustomerName,ProductName,Quantity)

  2. 然后在此基础查询上运行交叉表查询向导,这将是不言自明的。

  

我需要获取我的表客户和产品的所有记录,即使是没有订单记录的记录。

然后对于1.中的基本查询,您需要一个Full Outer Join

答案 1 :(得分:0)

选择idcustomer,[1]作为p1,[2]作为p2,[3]作为p3,[4]作为p4 从 ( 从订单中选择 idcustomer,idproduct,quantity)ps 枢 (总和(数量) 对于 ([1],[2],[3],[4]) 中的 idproduct ) 光伏; 我仍然无法弄清楚如何将 idcustomer 更改为 customername,但这对你有帮助(我确定!!)。