한컬럼에 있는 다중데이터 검색 재질문드립니다. 1 1 3,841

by 용팔이 [MySQL] 다중데이터 mysql 검색 [2016.03.10 01:38:28]


아래에 질문했는데 제가 멋모르고 너무 단순하게 질문을 드려서 정리해서 다시 질문드립니다!!

 

1. 테이블 형태

idx name code
1 과일상점1 01,02,03
2 과일상점2 06,04,02,01
3 과일상점3 03,02,01
4 과일상점4 06
5 과일상점5 04,06

 

DB: MySQL 5.6.x

 

2. 목적

위와 같이 테이블이 구성되어있고, 데이터가 들어있습니다.

code 는 과일의 종류이구요( 01 = 배 , 02 = 사과 , 03 = 귤 등등 )

목적은 판매중인 과일종류를 code로 만들어놓고 넣어두고 있습니다

 

3. 예상결과

 Ex:)  code 05,06 가 들어있는 과일상점을 조회하려고 한경우

과일상점2 , 과일상점5   가 결과로 나와야 합니다.( 06,06이 모두포함된 컬럼은 2개 이기 때문에 )

 Ex:) code 01,04,06 이 들어가있는 과일상점을 조회하려고 한경우,

과일상점2  가 나와야합니다. ( 01,04,06 모두가 들어있는 컬럼은 1개 이기 때문에 )

 

 

4. 제가해본 쿼리..

그럼 여기서  01(배) 를 팔고있는 상점정보를 가져오기 위해 쿼리를 아래처럼 했더니 결과가 나오지 않네요

검색하는 갯수는 동적이라서 01  로 1개 일수도있고  01,02  로 2개일수도 있고 01,02,03 로 3개일수도있습니다.

이때 동적인 케이스는 01 ~ 99개일듯합니다.

SELECT * FROM test WHERE code IN ('01','02');          X

 

SELECT a.temp
FROM(
SELECT '01,02,14'  AS temp
UNION ALL
SELECT '01,02'  AS temp
UNION ALL
SELECT '02,14'  AS temp
) a
WHERE a.temp REGEXP  '01|14';         X

 

아직 초짜인 저에겐 너무 어려운 부분이라 이렇게 조언을 구하고자 질문글을 올리게되었습니다ㅠㅠ

부디 작은 조언이라도 부탁드리겠습니다!

감사합니다.

by 마농 [2016.03.10 08:26:46]
SELECT a.idx
     , a.name
     , a.code
     , c.v_code
  FROM (SELECT 1 idx, '과일상점1' name, '01,02,03' code
        UNION ALL SELECT 2, '과일상점2', '06,04,02,01'
        UNION ALL SELECT 3, '과일상점3', '03,02,01'
        UNION ALL SELECT 4, '과일상점4', '06'
        UNION ALL SELECT 5, '과일상점5', '04,06'
        ) a    -- Data 테이블
 INNER JOIN
       (SELECT '01' code, '배' name
        UNION ALL SELECT '02', '사과'
        UNION ALL SELECT '03', '귤'
        UNION ALL SELECT '04', '감'
        UNION ALL SELECT '05', '밤'
        UNION ALL SELECT '06', '잣'
        ) b    -- Code 테이블
    ON INSTR(a.code, b.code) > 0
 INNER JOIN
       (SELECT '01,02,04' v_code) c    -- 검색조건
    ON INSTR(c.v_code, b.code) > 0
 GROUP BY a.idx, a.name, a.code, c.v_code
 HAVING COUNT(*) = LENGTH(c.v_code) - LENGTH(REPLACE(c.v_code, ',', '')) + 1
;

 

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입