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

매출이 오르면 내리는 수수료! 지금 수수료센터에서 전자결제(PG)수수료 비교견적 신청해 보세요!
테이블 조인 중복값 제외 데이터

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']."'
답변을 작성하시기 전에 로그인 해주세요.
전체 0
QA 내용 검색
  • 개별 목록 구성 제목 답변작성자조회작성일
  • 질문이 없습니다.

회원로그인

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