[오라클]테이블 조인 0 3 1,216

by ksbgenius [2015.11.11 11:48:24]


3개의 테이블이 있습니다.

 

A라는 테이블은 회원정보

아이디 생년월일 성별 이름 고유번호 ...그외 칼럼
test1 400101 1 test1 1234  
test2 400102 2 test2 5678  

 

B라는 테이블은 신청관련 테이블

아이디 이름 고유번호 그외 칼럼
test1 test1 1234 ..
test2 test2 5678 ..

 

C라는 테이블은 기록현황 테이블

생년월일-성별 이름 그외칼럼
400101-1 test1 ..
400102-2 test2 ..

C 테이블의 생년월일-성별은
형식이 생년월일-성별입니다.

문자열이 가운데 추가되어있습니다.

이 3개의 테이블을 조인이나 어떤 방식을 통해

 

C라는 테이블에 있는 모든 정보를 읽어올 수 있을까요?

by mugyeong [2015.11.11 13:50:13]
select t1.birth_gender from (select birth|| '-'|| gender birth_gender from t1) t1,t2
where t1.birth_gender=t2.birth_gender; 

 

 


by terry0515 [2015.11.11 13:50:41]

mssql 로 작성되었습니다.

문자열 결합부분만 조금 수정하시면 될거에요..

 

---쿼리시작---

with tblA (아이디,생년월일,성별,이름,고유번호) As
(
       Select 'test1','400101','1','test1',1234 Union All 
       Select 'test2','400102','2','test2',5678  
)
,tblB (아이디,이름,고유번호) As
(
       Select 'test1','test1','1234' Union All
       Select 'test2','test2','5678'
)
,tblC (생년월일_성별,이름,전화번호) As
(
       Select '400101-1','test1','0101112222' Union All
       Select '400102-2','test2','0169932222'
)
       Select c.*
         From tblA a

/*
                     Inner Join
                                tblB b
                                       On a.아이디 = b.아이디

*/
                     Left Outer Join
                                     tblC c
                                            On a.생년월일 + '-' + a.성별 = c.생년월일_성별
                                           And a.이름 = c.이름

---쿼리 끝---

 

뭔가 이상해보이네요..

C 테이블에도 ID 컬럼이 있어야

정상적으로 Join 이 가능할텐데요?

Join이야 억지로 시킬수도 있지만..

다음과 같은 경우가 발생할 소지가 있으니..

1) 생년월일 같음

2) 성별 같음

3) 이름 같음

 

1),2) 의 중복은 흔하게 일어날 빈도가 높습니다.

3) 의 조건까지 다 충족하는건 그리 많지는 않겠지만요..

참고만 하세요.

 

* 보탬 : 고유번호의 의미는 뭔가요?

            아이디야 중복될일이 없으니, 그 컬럼만 PK로 쓰면 될듯한데

            고유번호 도 유추되는 의미로는 Key 의 성격이 큰듯해서요.


* 보탬2 : 상기 조건상에서 B 테이블은 C테이블의 데이터를 가지고 오는데

             필요는 없을듯하여 주석처리했습니다.


by 스페이드 [2015.11.11 13:51:20]

A, B 2개의 테이블을 조인해서 C테이블을 보고 싶은건가요 ?

 

select
    A.생년월일 || '-' || A.성별 AS 생년월일-성별
    , A.아이디 AS 이름
    , A.*
    , B.*
from A,B
where A.아이디 = B.아이디

 

 

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입