나는 다 보았다. 그리고 불행히도, 내가 잘못하고있는 것을 알아낼 수 없다. MySQL 서버를 사용하는 개인 재무 관리 응용 프로그램을 개발하고 있습니다. 이 문제를 해결하기 위해 나는 4 개의 테이블을 가지고있다.열 값을 기준으로 조건부 조인
TRANSACTIONS
표는 SECONDARYCATEGORIES
및 BILLS
테이블의 기본 키를 참조 열 CATID
및 BILLID
이 포함되어 있습니다. TRANSACTIONS
및 BILLS
테이블에는 PRIMARYCATEGORIES
테이블의 기본 키를 참조하는 PCATID
열이 있습니다.
TRANSACTIONS
테이블의 "amount"열을 합한 SQL 쿼리를 작성하고 PCATID
의 기본 키와 해당 값과 관련된 모든 레코드의 합계를 반환합니다. BILLID
가 -1
로 설정되어있는 경우, 그것은 발견해야 PCATID
(-1
는이 법안이 아니다 나타 내기 때문에) SECONDARYCATEGORIES.ID = TRANSACTIONS.CATID
, 그렇지 않으면, 그것은 BILL
레코드에서 PCATID
을 발견해야하는 위치 SECONDARYCATEGORIES
의 경우 BILLS.ID
일치 TRANSACTIONS.BILLID
.
나는 (분명히 유효하지 SQL) 이런 식으로 뭔가를 찾고 있어요 :
SELECT
SECONDARYCATEGORIES.PCATID,
SUM(TRANSACTIONS.AMOUNT)
FROM
TRANSACTIONS
IF (BILLID = -1) JOIN SECONDARYCATEGORIES ON SECONDARYCATEGORIES.ID = TRANSACTIONS.CATID
ELSE JOIN SECONDARYCATEGORIES ON SECONDARYCATEGORIES.ID = BILLS.CATID WHERE BILLS.ID = TRANSACTIONS.BILLID
가 나는 등, IF 문, 다른 조인의 무수를 시도, 난 그냥 할 수없는 것 이 일. 나는이 값을 BILLID
의 값을 기반으로 다른 SQL 쿼리로 분할하고 값을 합산하는 방법을 생각했지만 가능하다면이 모든 것을 하나의 SQL 쿼리에서 수행하고 싶습니다.
나는 여기에서 명백한 무엇인가를 놓치고 있다는 것을 알고있다. 어떤 도움이라도 대단히 감사합니다.
편집 : BILLS 테이블을 설명하는 것을 잊었습니다. 기본 카테고리 인 ID와 설명 데이터가 포함되어 있습니다.
두 개의 왼쪽 외부 조인이 여기에서 문제를 해결할 수 있어야합니다. 귀하의 BILLS 테이블이 없습니다. – maSTAShuFu
여기에 BILLS 테이블이 보이지 않습니다. – Eric
샘플 데이터와 예상 출력을 제공 할 수 있습니까? –