채택완료

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

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

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

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

}

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

Copy
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개 / 댓글 2개

채택된 답변
+20 포인트

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

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

left join이 아닌

union all 을 사용하면 됩니다.

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

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

일단 동일하다는 가정하에 

Copy
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}' 

              ";

}

답변에 대한 댓글 1개

쉽게 이해가 되었습니다 이런경우는 저렇게 해야하는 좋은 가르침 감사합니다

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

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

답변에 대한 댓글 1개

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

답변을 작성하려면 로그인이 필요합니다.