조인한것과 조인하지 않은 것의 차이점좀 알려주세요 0 5 2,805

by 손님 조인 [2008.11.04 17:24:00]


테이블1
CREATE TABLE TEST1 (
        Code1 CHAR(4) NOT NULL,
        Code2 CHAR(4) NOT NULL,
        Tel1 CHAR(4) NOT NULL,
        Tel2 CHAR(4) NOT NULL,
        Tel3 CHAR(4) NOT NULL,
        Item1 Int,
        Item2   Int,
        Item3   Int
);

테이블2
CREATE TABLE TEST2 (
        Code1  CHAR(4) NOT NULL,
        Code2  CHAR(4) NOT NULL,
        Item1_Sale Int,
        Item2_Sale    Int,
        Item3_Sale   Int
);

테이블을 설명 드리자면
      테이블1에는 code1과 code2의 구룹으로 묶었구요.. 
          Tel1, Tel2, Tel3 은 전화번호의 지역번호 국번 상세번호 이고요 ..
          item1, item2, item3은 무선통화금 유선통화금 국제통화금이 들어 가있습니다.
      테이블2는 code1, code2 의 각 할인금액이 들어가 있습니다
          Item1_Sale = 무선통화 할인금
          Item2_Sale = 유선통화 할인금
          Item3_Sale = 국제통화 할인금


각 테이블에는 값이 들어 가있는 상태구요.


문제점
 [ Select Code2, SUM(Item1), SUM(Item2), SUM(Item3)
 From TEST1
 Where Code1 = '0002'
 group by Code2 ]
        이렇케 해서 나온 결과 값(SUM(Item1), SUM(Item2), SUM(Item3))과

 [ Select A.Code2, SUM(A.Item1), SUM(A.Item1 * B.Item1_Sale), SUM(A.Item2), SUM(A.Item2 * B.Item12_Sale), SUM(A.Item3) SUM(A.Item3 * B.Item3_Sale)
   From TEST1 A, TEST2 B
   Where A.Code1 = B.Code1 and A.Code1 = '0002'
 group by A.Code2 ]
 이렇케 해서 나온 결과 값(SUM(A.Item1), SUM(A.Item2)), SUM(A.Item3))이 다르게 나옵니다..

같은 값이어야 하는게 아닌가요?

무엇이 잘못 됬는지 알수가 없네요

조언좀 부탁드립니다..

 

by 채용근 [2008.11.04 17:27:16]
TEST1테이블엔 있는데 TEST2테이블엔 없는 Code1이 있나부졍

by TeLl2 [2008.11.04 17:42:59]
제가 보기엔 code1과 code2가 키 같은데 code1만 조인 하셨네요.
test2의 code2 값이 '0002'가 아니지만 code1이 같은 것들은
조인과정에서 값이 뻥튀기 되어져 나올거 같네요..
그게 아니라면
test1 테이블에는 값이 있는데 test2테이블에는 값이 없는게 있는지 확인하세요.

by 김하진 [2008.11.04 17:47:53]
조인이 잘못 되었네요.
두번째 쿼리를 다음과 같이 수정해야 합니다.

Where A.Code1 = B.Code1
->
Where A.Code1 = B.Code1 and A.code2 = B.code2로

by 마농 [2008.11.04 17:50:16]
Code2 도 조인하셔야지요. 그래야만 n:1 조인이 됩니다.
안그러면 n:m 조인이 되어버려서 데이터가 부풀려집니다.

by 손님 [2008.11.04 18:31:30]
code2 조인이 빠진게 원인이었군요 답변주신님들 감사합니다
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입