database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
Oracle
Informix
Sybase
ㆍMS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
MS-SQL Q&A 980 게시물 읽기
No. 980
세개의 테이블에서....
작성자
왕!초보
작성일
2003-10-06 15:25
조회수
3,823

아무리 찿아도 보이지 않습니다....ㅠㅠ
내용은 다음과 같습니다.

A테이블, B테이블, C테이블이 있습니다.

A테이블 A_거래처 A_대리점
문화서점 광화문점
한국서점 광화문점
경기책방 서대문점

B테이블 B_거래처 B_판매량
문화서점 130 권
한국서점 120 권
경기책방 100 권

C테이블 C_거래처 C_재고량
문화서점 200 권
한국서점 300 권
경기책방 100 권

위와 같은 3개의 테이블이 존재할 때....

출력 쿼리 실행시...

판매량 재고량
광화문점 250 권 500 권
서대문점 100 권 100 권

이렇게 나와야 하거든요....

암만 해도 나오질 않네요...ㅠㅠ

고수님...들의 도움 부탁 드립니다..

제가 한 방법은요...

select A_대리점 , isnull(sum(B_판매량),0) 판매량,
isnull(sum(C_재고량),0) 재고량
from A
left outer join B on A_거래처 = B_거래처 and B_날짜 = '20010101'
left outer join C on A_거래처 = C_거래처 and C_날짜 = '20010101'

group by A_대리점

이렇게 했더니

당일날 판매량과 재고량이 있을경우 그 값이 판매량 이든, 재고량 이든 Double값이 나오더군요...
무엇이 잘못된 것일까요?...

이 글에 대한 댓글이 총 2건 있습니다.

제가 만약 질의한다면...

case(sum(if 조건='광화문점' then sum할해당필드 else 0)) as A

위 문장을 응용하시면 답이 나올듯 싶네여...

기존 where 조건과 조인문은 그렇게 쓰시구요~

도움이 되었나모르겠네여~

 

지나가는이님이 2003-10-07 12:46에 작성한 댓글입니다. Edit

A테이블에만 거래처 정보가 존재하고  B테이블(판매정보)이나 C테이블(재고정보) 관련 거래처의 정보가 없을 수가 있기 때문에 LEFT outer 조인을 했습니다. 기간을 조건으로 넣고 싶으시면,

FROM 절 다음에 있는 각 Sub Query에 기간 관련 조건을 넣으시면

됩니다..

 


SELECT SALE.A_대리점 ,SUM(sale_cnt) AS sale_cnt  , SUM(stock_cnt)  AS stock_cnt
   FROM
       (
          SELECT A.A_거래처 , A.A_대리점, isnull(B.B_판매량,0) as sale_cnt
                 FROM A테이블 A LEFT OUTER JOIN B테이블 B
             ON (A.A_거래처 = B.B_거래처 )
        )  SALE
            INNER JOIN
        (
          SELECT A.A_거래처 , A.A_대리점, isnull(B.C_재고량,0) as stock_cnt
             FROM A테이블 A LEFT OUTER JOIN C테이블 B
             ON (A.A_거래처 = B.C_거래처 )
        ) STOCK 
    ON (SALE.A_거래처 = STOCK.A_거래처 )
GROUP BY SALE.A_대리점
ORDER BY sale_cnt DESC

 

 

 

 

가을남자님이 2003-10-09 18:10에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
983CHECK 제약조건에서 subquery를 사용할 수 없나요?? [1]
방선이
2003-10-08
3140
982저장프로시저를 디버깅하고 싶은데염.... [1]
박상호
2003-10-06
3478
981ORACLE DB를 MS-SQL DTS로 변환 [2]
ORACLE
2003-10-06
3954
980세개의 테이블에서.... [2]
왕!초보
2003-10-06
3823
979메신저프로그램 개발(C++6.0)중 DB연동관련때문에 질문드립니다. [1]
안진규
2003-10-06
3062
978null값과 공백, 날짜 입력할 때 어떻게하나요? T_T [1]
chobo
2003-10-05
7376
977데이터 복원시 데이터의 손실..!..(꼭좀 도와 주세요..)
급한질문자
2003-10-05
2902
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.019초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다