안녕하세요 저는 SQL 초보자이며 문제가 있습니다. SUM을 사용하여 SQL 다중 테이블 조인
내가 가지고있는 다음과 같은 5 표 :지점 (이름, 도시), 직원 (EMPNO, 이름, 지점), 고객 (의 CustNo, 이름, EMPNO), AccountDetails (ACCNO,의 CustNo), 계정 (ACCNO, 밸런스)
종업원 하나에 가입 된 Employee 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를 사용했다. d.accno IN (accountDetails와는 별개로 accno를 선택하십시오.) 그러나 아무 소용이 없어도 여전히 두 배가됩니다.
계정 테이블에 지점 속성을 넣었지만 가능한 경우 그렇게하지 않으려합니다.
도움을 주시면 대단히 감사하겠습니다.
감사합니다.
왜 고객, 계좌 세부 정보 및 은행 계좌 직원에게 정확히 합류하고 있습니까? 당신은 그들로부터 기둥을 사용하지 않는 것 같습니다. – Aushin
그리고 여러 고객이 다른 지점에 직원이있는 계정을 공유하는 경우 어떻게해야합니까? 데이터 모델에는 몇 가지 문제점이 있습니다. 특히, 고객이 은행 직원에게 직접 부착되는 것이 이상하게 보입니다. –
@Aushin이 무슨 뜻인지 자세히 설명해 주시겠습니까? 고마워요 – monster