테이블 조인 중복값 제외 데이터

테이블 조인 중복값 제외 데이터

QA

테이블 조인 중복값 제외 데이터

본문

안녕하세요 아래와 같이 테이블 3개가 존재하고있습니다.

각 회원 별로 로그인시 request, usegoods 테이블의 id 를 조건 잡아서

goods테이블에 중복되지 않은 데이터를 추출하려고 합니다.

nike 로그인시 goodsNum 테이블의 104 , 105, 106 데이터가 나와야하고

adidas 로그인시 100, 105, 106 데이터가 나와야 하는데 

 

SELECT b.* FROM goods_request a RIGHT OUTER JOIN 
goods_admin b ON a.goodsNo = b.goodsNo WHERE a.goodsNo IS NULL 
AND b.goodsNo NOT IN (SELECT goodsNo FROM goods WHERE goodsId = '".$member['mb_id']."')

작업 쿼리입니다.ㅡㅜ

 105, 106 데이터만 나와버립니다..

 

goodsNo 가 같은 데이터는 뽑을수 있겠는데

userId 별로 중복되지 않는데이터를 뽑기가..;;

고수님들 도움부탁드립니다.

 

goods_admin

goodsNo
100
101
102
103
104
105
106

 

goods_request

goodsNo userId
103 nike
103 adidas
104 adidas

 

goods

goodsNo userId
100 nike
101 nike
102 nike
101 adidas
102 adidas

 

 

 

이 질문에 댓글 쓰기 :

답변 2

userId  부분을 변경하시면 됩니다 

 

SELECT b.goodsNo FROM

( select goodsNo from goods_request where userId='adidas'

union

select goodsNo from goods where userId='adidas' ) as a

right join goods_admin as b on(a.goodsNo=b.goodsNo)

where a.goodsNo is NULL

먼저 SELECT goodsNo FROM goods WHERE goodsId = '".$member['mb_id']." 이 부분에서 나오는 값이 1개 이상이라면 위 쿼리문에서 오류가 날 수 밖에 없습니다.

AND b.goodsNo NOT IN ( ... ) 여기에 값이 1,2,3 이런씩으로 들어가야 하는데 결과가 그렇게 나오질 않거든요.

따라서 서브쿼리 자체가 위 쿼리와 같이 join이 되어야 합니다.

즉 테이블 3개를 조인해서 돌려보세요.

 

예) 이것과 비슷하게 상황에 맞게 바꾸시면 되지 싶네요.(테이블 관계가 어떻게 되는지 몰라 대충 만든 쿼리입니다.)


SELECT b.*
FROM goods_request AS a
RIGHT OUTER JOIN goods_admin AS b ON a.goodsNo=b.goodsNo
JOIN goods AS c ON b.goodsNo=c.goodsNo
WHERE a.goodsNo IS NULL 
AND c.goodsId='".$member['mb_id']."'
답변을 작성하시기 전에 로그인 해주세요.
전체 37
QA 내용 검색

회원로그인

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