3개 테이블 불러오는 쿼리문 질문입니다

3개 테이블 불러오는 쿼리문 질문입니다

QA

3개 테이블 불러오는 쿼리문 질문입니다

본문

etc_name , movie_name , music_name 이라는 테이블을 2개를더 만들어서 같이 불러올려고합니다

기존에 사용하던 쿼리문 입니다.


if ($mb_title) {
    $sql = " select wt_idx, bo_table, mb_title_a from etc_name where mb_title_a = '{$mb_title}' ";
} 

 

이렇게 불러오는게 맞는지 좀 알려주세요

 


if ($mb_title) {
$sql = " SELECT B.wt_idx, B.bo_table, C.mb_title_a, A.*
FROM etc_name A
left outer join (select * from movie_name where mb_title_a = '{$mb_title}') B on A.wt_idx = B.wt_idx
left outer join (select * from music_name where mb_title_a = '{$mb_title}') C on A.wt_idx = C.wt_idx
where mb_title_a = '{$mb_title}' ";
}

 

아직 초보라 쿼리문이 맞는지 잘 모르겠습니다 ㅠ

이 질문에 댓글 쓰기 :

답변 2

mb_title_a 라는 공통필드가 존재하는경우

 

한번에 다 가져올필요가 있을때는

left join이 아닌

union all 을 사용하면 됩니다.

3개의 테이블이 필드구조와 순서가 동일할경우, select * 로도 가능하지만

가급적 필드를 일일히 명시하는게 좋습니다.

 

일단 동일하다는 가정하에 


if ($mb_title) {
    $sql = " SELECT * FROM etc_name where mb_title_a = '{$mb_title}' 
               union all
               select * from movie_name where mb_title_a = '{$mb_title}' 
               union all
               select * from music_name where mb_title_a = '{$mb_title}' 
              ";
}
 

제가 보기에는 데이터베이스 테이블 구조부터 잘못잡혀있는걸로 보입니다.

 

join 보다는 union 형식이 맞을걸로 보이고

 

그냥 3번 날리시는게 좋아보입니다.

 

조인형태로 하시려면

A = 신청서

B = 신상정보

C = 상품정보

select A.idx,A.신청일, B.신청자명, C.상품명 from A,B,C where A.user_idx = B.user_idx and A.item_idx=C.item_idx and A.reg_date = '신청일' 

 

이런형태로 진행하시면 되는데 위 테이블 구조는 이런형태가 아니라 동일한 구조의 헝태로 보입니다.

좀더 조이의 예제를 보시려면 아래 링크 참조하세요

 

http://rapapa.net/?p=311

 

 

제 질문에 대한 정확한 답변을 플래토님이 해주셔서 채택을 드렸습니다 찰스님도 좋은 가르침을 가르쳐 주셔서 감사합니다 채택 드리고 싶은데 한분이라서 죄송합니다 ㅠㅠ

답변을 작성하시기 전에 로그인 해주세요.
전체 43
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT