이런것도 쿼리한번에 가능한가요? 0 2 1,619

by erea [MySQL] mysql 쿼리 [2014.11.12 11:34:51]


mysql인데

A테이블

    CATE_NM CATE_CD CATE_CD2
     분류1        1     1        
     분류2        1     2
     분류3        1     3        
     분류4        1     4
     분류5        1     5        
     분류6        1     6
     분류7        1     7        
     분류8        1     8
     분류9        1     9        
     분류10      1     a
     분류11      1     b        
     분류12      1     c

B테이블

    TITLE  CATE_CD CATECD2
    제목1    1        1|2|3|4|a
    제목2    1        1|2|3|a
    제목3    1        1|2|3|4|a
    제목4    1        3
    제목5    1        1|2
    제목6    2        1|2|3|a
    제목7    1        4
    제목8    4        1
    제목9    1        1|2|3|4|a
    제목10    5        1|2|6
    제목11    1        1|2
    제목12    7        1|2|3|a

결과
    결과     갯수    
    분류 1   : 10
    분류 2   : 25
    분류 3   : 10
    분류 4   : 15
    분류 5   : 15
    분류 6   : 15
    분류 7   : 12
    분류 8   : 15
    분류 9   : 11
    분류 10  : 15
    분류 11  : 12
    분류 12  : 14

이렇게 구분자 | 로 넣어져있는 데이터를 쿼리 한번에

like 검색이나 다른방식으로 sum으로 갯수를 가져올수있나요?

 

 

by 마농 [2014.11.13 10:29:35]
SELECT a.cate_nm
     , COUNT(b.cate_cd) cnt
  FROM (SELECT '분류1' cate_nm, '1' cate_cd, '1' cate_cd2
        UNION ALL SELECT '분류2' , '1', '2'
        UNION ALL SELECT '분류3' , '1', '3'
        UNION ALL SELECT '분류4' , '1', '4'
        UNION ALL SELECT '분류5' , '1', '5'
        UNION ALL SELECT '분류6' , '1', '6'
        UNION ALL SELECT '분류7' , '1', '7'
        UNION ALL SELECT '분류8' , '1', '8'
        UNION ALL SELECT '분류9' , '1', '9'
        UNION ALL SELECT '분류10', '1', 'a'
        UNION ALL SELECT '분류11', '1', 'b'
        UNION ALL SELECT '분류12', '1', 'c'
        ) a
  LEFT OUTER JOIN
       (SELECT '제목1' title, '1' cate_cd, '1|2|3|4|a' cate_cd2
        UNION ALL SELECT '제목2' , '1', '1|2|3|a'
        UNION ALL SELECT '제목3' , '1', '1|2|3|4|a'
        UNION ALL SELECT '제목4' , '1', '3'
        UNION ALL SELECT '제목5' , '1', '1|2'
        UNION ALL SELECT '제목6' , '2', '1|2|3|a'
        UNION ALL SELECT '제목7' , '1', '4'
        UNION ALL SELECT '제목8' , '4', '1'
        UNION ALL SELECT '제목9' , '1', '1|2|3|4|a'
        UNION ALL SELECT '제목10', '5', '1|2|6'
        UNION ALL SELECT '제목11', '1', '1|2'
        UNION ALL SELECT '제목12', '7', '1|2|3|a'
        ) b
    ON a.cate_cd = b.cate_cd
   AND CONCAT('|', b.cate_cd2, '|') LIKE CONCAT('%|', a.cate_cd2, '|%')
 GROUP BY a.cate_cd, a.cate_cd2, a.cate_nm
;

 


by erea [2014.11.13 15:39:04]

와 대박 감사합니다!

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