sql left join 에서 a테이블에 있는 데이터들중 b테이블에 등록되지 않은 a테이블의 데이터만 조회

sql left join 에서 a테이블에 있는 데이터들중 b테이블에 등록되지 않은 a테이블의 데이터만 조회

QA

sql left join 에서 a테이블에 있는 데이터들중 b테이블에 등록되지 않은 a테이블의 데이터만 조회

본문


$sql = " select * from {$g5['g5_shop_item_table']} where it_use = '1' order by it_id ";

위 코드처럼 상품을 조회해서 상품목록을 출력하고 있는데요.

 

게시판에 wr_1 에 it_id 를 물려서 게시글을 작성하고 있습니다.

 

여기에 보완하기 위해 글쓰기시 wr_1 에 이미 등록된 it_id 가 있으면 상품조회시 걸러내고 싶은데요. (동일한 상품을 물고 있는 중복게시글 방지를 위한....)

 

영카트 left join 이 많이 쓰이는것 같아 다른 페이지에서 left join 을 쓰고 있는 곳을 보고 적용을 하려고 합니다.


$sql = " select * from {$g5['g5_shop_item_table']} a left join {$write_table} b where a.it_use = '1' order by it_id ";

여기까지는 알겠는데.... 구글링해서 보면 on 절도 넣어서 on (a.id = b.id) 이렇게 가져오더라구요.

근데 제가 가져오고싶은 데이터는 wr_1에 등록되지 않은 it_id들만 조회를 하고 싶은데

 

어떻게 조회를 해야할까요...??

이 질문에 댓글 쓰기 :

답변 1

기본적으로는 다음과 같은 형태가 될것 같습니다만


$sql = " select * from {$g5['g5_shop_item_table']} a left join {$write_table} b on b.wr_1 = a.it_id where a.it_use = '1' and b.wr_1 is null order by a.it_id ";

 

실제 데이터들의 형태와 분포도, 그리고 원하는 정확한 아웃풋에 따라

쿼리는 달라질수 있습니다.

방금 다시 구글링해서 원하는 답을 찾아서 해결됐다고 쓰려고 왔는데...

벌써 답변이 달렸네요! 답변 감사드립니다!! 알려주신 방법도 한번 적용해보겠습니다.

제가 찾은 방법은 left outer join 이었습니다.


$sql = " select * from {$g5['g5_shop_item_table']} a left outer join {$write_table} b on (a.it_id = b.wr_1) where a.it_use = '1' and b.wr_1 is null order by it_id ";

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

회원로그인

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