매출 상세 내역과 입금 내역을 거래처,일자,전표번호 순으로 정렬하여 보려 합니다.
A.테이블 - 거래처코드(Varchar, 5)
- 전표번호(Varchar, 12)
- 일자
- 품목코드(Varchar, 5)
- 단가
- 공급가
- 세액
- 합계액
B.테이블 - 거래처코드(Varchar, 5)
- 전표번호(Varchar, 12)
- 일자
- 입금액
상기 테이블외 상품, 사업장 테이블이 있어 INNER JOIN 으로 코드 결합하여 상품명, 사업장 정보를 조인하여고
A.B 테이블 거래처, 전표번호순으로 정렬하려 했으나 잘되지 않습니다.
결과는
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
A.거래처코드 A.전표번호 A.일자 A.품목코드 A.단가 A.공급가 A.세액 A.합계액 B.거래처코드 B.전표번호 B.일자 B.입금액
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
0001 20130101-0001 2013-01-01 0005 10,000 10,000 0 10,000
0001 20130101-0001 2013-01-01 0008 10,000 10,000 0 10,000
0001 20130102-0001 2013-01-01 20,000
0001 20130110-0005 2013-01-10 0010 20,000 20,000 0 20,000
0003 20130112-0002 2013-01-12 0014 10,000 10,000 0 10,000
위와 같이 한 거래처가 일자로 표현되면서 같은 거래처에 전표번호가 순차적(입금 데이터)으로 정렬될 수 있나요?
조인시는 거래처코드와 일자로 조인을 하니 해당 일자만 표시되고 조인되지 않는 일자는 누락이 되고 거래가 없고 입금 정보만 있으면
마찬가지로 누락됩니다. 유니오ㄴ, 조인 안되어 문의 드립니다.
Comment 3
-
건우아빠
2013.07.15 17:40
-
맨즈밤
2013.07.15 18:50
FULL JOIN 을 이용할수 있겠지만 그보다는 UNION ALL을 이용한 방법이 더 쉽고 빠를듯 합니다. 아래 처럼...
SELECT 거래처,일자,매출액=SUM(매출액),입금액=SUM(입금액)
FROM (SELECT 거래처,일자,매출액,입금액=0
FROM 매출테이블
UNION ALL
SELECT 거래처,일자,매출액=0,입금액
FROM 입금테이블 ) A
GROUP BY 거래처,일자ORDER BY 거래처,일자
매출과 입금은 직접적으로는 관계가 없지요. 다만 한거래처에 매출,입금 같이 보여야 하고 필요하면 잔액도 표시해야하기에 데이터 연결방법이 필요할 뿐이구요. 한매출에 여러 입금이 있을수있고, 여러매출에 한 입금이 있을수도 있고, 매출과 관계없는 입금이 있을수도 있고,,,이걸 굳이 FK 관계로 묶어서 관리하겠다면 이러한 다대다 관계나 예외처리에 대한 부분을 풀어내야할듯 합니다.
-
chs217
2013.07.15 19:05
빠른 답변 정말 감사합니다.
A.테이블의 전표 번호와 B.테이블의 전표 번호는 같은 개념으로 중복이 되지 않으며 같은 순차번호입니다(입력일자 + 일련번호)
일단 A테이블의 전표번호 B테이블의 전표번호가 같은 개념인지. 각테이블의 고유번호인지에 따라 달라질듯 합니다.
A테이블은 매출테이블이면 전표번호는 매출번호, B테이블은 입금테이블이다면 이때 전표번호가 입금번호인지 매출번호의 입금 내용인지 ? 입금은 분할을 하여 입금이 되는 경우가 많아 전표번호의 의미이미 상당히 난해해 집니다.
다른 성격의 테이블인경우는 조인 보다는 union 으로 붙여 넣는게 효율적일듯 합니다.
제품의 내역을 같이 보여 주는 경우는 일자의 첫번째 로우에 입금 정보를 합산해서 넣어주는 방법으로 하는게 효과적이지 않을까 봅니다.
입금이 분할로 나눠서 입금되는 경우가 다반사이기 때문에 매출번호를 가지고 가능 경우는 상당히 절차적이고 체격적으로 구성이 이루어 지지 않으면 입금 관련 쿼리들이 상당히 까다롭게 됩니다.