채택완료
sql left join 에서 a테이블에 있는 데이터들중 b테이블에 등록되지 않은 a테이블의 데이터만 조회
Copy
$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 을 쓰고 있는 곳을 보고 적용을 하려고 합니다.
Copy
$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개 / 댓글 2개
채택된 답변
+20 포인트
2023-04-21 (금) 15:27:03
기본적으로는 다음과 같은 형태가 될것 같습니다만
Copy
$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 ";
실제 데이터들의 형태와 분포도, 그리고 원하는 정확한 아웃풋에 따라
쿼리는 달라질수 있습니다.
답변에 대한 댓글 2개
coDribble
2023-04-21 (금) 15:31:07
답변을 작성하려면 로그인이 필요합니다.
벌써 답변이 달렸네요! 답변 감사드립니다!! 알려주신 방법도 한번 적용해보겠습니다.
제가 찾은 방법은 left outer join 이었습니다.
[code]
$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 ";
[/code]