嗨,我是 SQL 的初学者,遇到了问题。
我有以下 5 个表:
分公司(姓名、城市)、 员工(员工编号、姓名、分公司)、 客户(客户编号 、姓名、员工编号)、帐户详细信息(帐户编号、客户编号)、 帐户(帐户编号、余额)
员工通过 Employee Branch 属性加入到单个 Branch。客户通过 EmpNo 属性连接到单个 Employee。
每个客户可以有多个帐户,每个帐户可以有多个客户(因此允许共享帐户) - 因此我创建了一个交叉实体(AccountDetails)。
我想对每个分行的总余额求和 - 我得到的问题是我的总数是重复计算的,即由于许多客户可以共享一个帐户,我的代码将计算每个客户帐户,即使它指的是相同的 AccNo - 所以AccNo 和随附的余额会反复计算,具体取决于有多少客户共享一个帐户,因此如果 2 个客户共享一个帐户,则余额将被计算两次。
select sum(a.balance), a.accno, b.name
from branch b, bankemployee e, customer c, accountdetails d, account a
where b.name = e.branch
and e.empno = c.empno
and c.custno = d.custno
and d.accno = a.accno
group by a.accno, b.name
我使用了 DISTINCT egdaccno IN(从 accountDetails 中选择不同的 accno),但无济于事,它仍然是双重计数。
我在 Account 表中放置了一个 Branch 属性,但如果可能的话,我不想这样做。
任何帮助是极大的赞赏。
谢谢你。