こんにちは、私は SQL の初心者で、問題があります。
次の5つのテーブルがあります。
支店(名前、都市)、 従業員(EmpNo、名前、支店)、 顧客(CustNo、名前、EmpNo)、 AccountDetails (AccNo、CustNo)、 アカウント(AccNo、残高)
従業員は、Employee Branch 属性を介して 1 つの Branch に結合されます。顧客は、EmpNo 属性を介して 1 人の従業員に結合されます。
各顧客は多くのアカウントを持つことができ、各アカウントは複数の顧客を持つことができます (したがって、共有アカウントが許可されます) - したがって、交差エンティティ (AccountDetails) を作成しました。
各ブランチの合計残高を合計したい - 問題は、合計が二重にカウントされることです。つまり、多くの顧客がアカウントを共有できるため、コードは同じ AccNo を参照しているにもかかわらず、各顧客アカウントをカウントします。アカウントを共有している顧客の数に応じて、AccNo とそれに付随する残高が何度もカウントされるため、2 人の顧客がアカウントを共有している場合、残高は 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 属性を配置しましたが、できればそのようにしたくありません。
どんな助けでも大歓迎です。
ありがとうございました。