database.sarang.net
UserID
Passwd
Database
DBMS
ㆍMySQL
PostgreSQL
Firebird
Oracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
MySQL Q&A 31268 게시물 읽기
No. 31268
1:n구조의 쿼리 문의드립니다.
작성자
기훈
작성일
2019-12-03 02:59ⓒ
2019-12-03 03:01ⓜ
조회수
2,030

 쿼리 문의 드립니다.

 
상품 테이블
 
번호 | 이름
------------
1     | 청바지
2     | 니트
 
 
옵션 테이블
 
번호 | 상품 번호 | 타입
-----------------------
1     |  1           | a
2     |  1           | b
3     |  1           | c
4     |  2           | a
5     |  2           | b
 
 
라는 데이터가 있을때
 
옵션 테이블을 기준으로
상품 번호가 1이고 타입이 a,b,c이면 상품 테이블의 1번이 나와야 합니다.
상품 번호가 1이고 타입이 a,b이면 결과가 없어야 합니다.
 
상품 번호가 2이고 타입이 a,b이면 상품 테이블의 2번이 나와야 합니다.
상품 번호가 2이고 타입이 a,b,c이면 결과가 없어야 합니다.
 
이걸 어떻게 쿼리해야할까요?
감사합니다.
이 글에 대한 댓글이 총 3건 있습니다.

두개의 테이블을 제시하고
조건에 따른 결과를 글로 표현했는데요?
해당 조건들은 어디에서 나오는 건가요?
또 다른 테이블 인가요? 아니면 다른 형태인가요?
조건 대비 결과도 위 두 테이블 처럼 글이 아닌 표 형태로 제시해 줄 수 있나요?

마농(manon94)님이 2019-12-04 19:16에 작성한 댓글입니다.

- 상품 번호가 1이고 타입이 a,b,c이면 상품 테이블의 1번이 나와야 합니다.

 

ex) 옵션테이블 where 상품 번호 = 1 and (???) in ('a', 'b', 'c')

ex) 옵션테이블 where 상품 번호 = 1 and (???) in ('a', 'c', 'b')

 

1    | 청바지

 

 

 

 

- 상품 번호가 1이고 타입이 a,b이면 결과가 없어야 합니다.

 

ex) 옵션테이블 where 상품 번호 = 1 and (???) in ('a', 'b')

ex) 옵션테이블 where 상품 번호 = 1 and (???) in ('a', 'c')

ex) 옵션테이블 where 상품 번호 = 1 and (???) in ('c', 'b')

 

empty

 

 

 

 

- 상품 번호가 2이고 타입이 a,b이면 상품 테이블의 2번이 나와야 합니다.

 

ex) 옵션테이블 where 상품 번호 = 2 and (???)) in ('a', 'b')

ex) 옵션테이블 where 상품 번호 = 2 and (???)) in ('b', 'a')

 

2    | 니트

 

 

 

 

- 상품 번호가 2이고 타입이 a,b,c이면 결과가 없어야 합니다.

 

ex) 옵션테이블 where 상품 번호 = 2 and (???)) in ('a')

ex) 옵션테이블 where 상품 번호 = 2 and (???)) in ('b', 'c')

ex) 옵션테이블 where 상품 번호 = 2 and (???)) in ('a', 'b', 'c')

 

empty

 

상품 테이블에 소속된 옵션이 모두 있는지 검증하는 건데 설명이 부족합니다.

기훈님이 2019-12-05 16:52에 작성한 댓글입니다. Edit

SELECT a.번호
     , a.이름
  FROM 상품테이블 a
 INNER JOIN 옵션테이블 b
    ON a.번호 = b.상품번호
 WHERE b.상품번호 = 1
 GROUP BY a.번호, a.이름
HAVING COUNT(*) = COUNT(CASE WHEN b.타입 IN ('a', 'b', 'c') THEN 1 END)
;

마농(manon94)님이 2019-12-06 09:32에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
31272[질문] SELECT 에서 IN이랑 =(equal) 성능차이가 있을까요 [3]
박노중
2020-01-06
2001
31271호텔 예약 테이블 구조 문의 [1]
성수
2019-12-21
2133
31269아래 쿼리 플랜은 성능이 어느정도일까요? [1]
belhyun
2019-12-10
1999
312681:n구조의 쿼리 문의드립니다. [3]
기훈
2019-12-03
2030
31267기초 데이터베이스 테이블 질문 [2]
김상훈
2019-11-26
2164
31266아주 기초적인 데이베이스 테이블 관련 질문입니다 [2]
초보자입니다
2019-11-20
2050
31265하나의 프로시저에서 DECLARE ... HANDLER 사용 시 다수의 SQLEXCEPTION 사용이 가능한지요?!
김성환
2019-11-19
1832
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2023 DSN, All rights reserved.
작업시간: 0.050초, 이곳 서비스는
	PostgreSQL v16.1로 자료를 관리합니다