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

 

 

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

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

회원로그인

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