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 = '신청일'
이런형태로 진행하시면 되는데 위 테이블 구조는 이런형태가 아니라 동일한 구조의 헝태로 보입니다.
좀더 조이의 예제를 보시려면 아래 링크 참조하세요
답변을 작성하시기 전에 로그인 해주세요.