我认为这应该很容易,但是却在逃避我。我在帐户和帐户组之间建立了多对多关系。一个帐户可以在零个或多个组中,因此我使用的是标准联接表。
Accounts -------- ID BankName AcctNumber Balance AccountGroups ------------- ID GroupName JoinAccountsGroups ------------------ AID GID
我正在使用MS Access,FWIW。另外,这是针对低带宽的情况,因此代码优化不如简单性/可读性那么重要。
我使用php作为表示层,因此Access的基本结果很好。
至于如何处理多结果情况,我实际上有两件事正在尝试构建。第一列在一个列中列出了所有组,因此:
Bank AcctNum Balance Groups --------|--------------|----------|---------------- Citi 930938 400 Payroll HSBC 8372933 100 Monthly, Payroll Wells 09837 800 - Chase 8730923 250 Monthly
第二个是主从列表:
Name AcctNum Balance ------------|----------|---------- Payroll (2) 500 Citi 930938 400 HSBC 8372933 100 .................................. Monthly (2) 350 HSBC 8372933 100 Chase 8730923 250 .................................. Wells 09837 800
对于主细节,我的计划是从db中获得较大的结果集,并根据需要在php中进行修改。由于无论如何都会在php中进行一些重要的后处理,也许我应该只做三个单独的查询并在那里进行连接。(因为我对这种语言比较满意。)
这
SELECT a.BankName, a.AcctNumber, a.Balance, ag.GroupName FROM (Accounts a LEFT JOIN JoinAccountsGroups jag ON a.ID = jag.AID) LEFT JOIN AccountGroups ag ON jag.GID = ag.GroupName;
将为第一个表选择数据,但是要连接组(每月,工资),您将需要一个用户定义函数(UDF),而Jet则无法使用它,因此有必要在PHP中进行处理。
您可能希望阅读了解SQL连接。它指的是MySQL,但大部分情况下适用于Jet。