如何在MS Access

时间:2015-04-30 02:34:01

标签: sql ms-access parent-child

我有许多与父/子关系有关的事项。每个都有一个指向父事件的指针,如果它们是父项,则为null。每件事都可以付款,但父/子关系中的所有付款都由父母和孩子共同承担。我的表的简化版本是:

Matter

|  ID       |   Value   | ParentID   |
--------------------------------------
|      1    |    200    |      0     |
|      2    |    200    |      1     |
|      3    |    300    |      0     |
|      4    |    200    |      1     |
|      5    |    800    |      0     |

Payment

|  ID       |   Value   | MatterID   |
--------------------------------------
|      1    |    100    |      1     |
|      2    |     50    |      4     |
|      3    |     20    |      3     |

请注意,Matter值是由子项继承的(实际上它只是一个引用)

我想查询:

  • 每件事的剩余金额=([值] - 总和([父/子关系中的所有付款))
  • 所有父母事务的视图,其中包含父母/子女关系中所有付款的总和。

我正在考虑为每个付款显示他们适用的ParentMatter的联接查询,但是从子视图查看时这对我没有帮助吗?

预期结果如下:

1. Query only parent matters 
|  ID       |   Value   | TotalRcvd  |
--------------------------------------
|      1    |    200    |    150     |
|      3    |    300    |     20     |
|      5    |    800    |      0     |

2. Query all matters
|  ID       |   Value   | TotalRcvd  |
--------------------------------------
|      1    |    200    |    150     |
|      2    |    200    |    150     |
|      3    |    300    |     20     |
|      4    |    200    |    150     |
|      5    |    800    |      0     |

其中[TotalRcvd]是适用于该事项的所有付款的总和。例如,事项1是事项2和4的父事项(事项表中的ParentID参考)。针对事项1,2或4记录的任何付款将转至每个付款的TotalRcvd。因此,他们每人的总收到[TotalRcvd]为150。

任何帮助表示感谢。

0 个答案:

没有答案