리스트 형태의 데이터를 세로로 분할 0 1 2,337

by 찐찐유한 [SQL Query] [2023.04.27 16:04:27]


1. 테이블명 : a_t

2. 칼럼

    1) 메뉴명 - 예시데이터 : ['한우죽','버섯죽'] / ['느타리버섯줏','한우죽','닭죽','전복죽']
    2) 메뉴별 실출고병수 - 예시데이터 : [1,1]  / [1,2,1,0]
        : 메뉴별 실출고병수를 뜻하기 때문에 이 칼럼의 값인 리스트 속 요소개수는
         같은 행에 있는 메뉴명 칼럼의 값인 리스트 속 요소의 개수가 일치
    3) 세트 - 예시데이터 : [1,2] / [1]
       : 병수보다 더 상위단의 단위로, 한우죽의 출고병수가 1병이더라도 세트수가 2세트면 총 출고병수는 1곱하기2 = 2병이 된다
       : 메뉴명 칼럼과 메뉴별 실출고병수 칼럼의 리스트요소개수는 일치하기 때문에 아래의 쿼리를 통해  numbers 테이블에 일대일로 잘
         매칭하여 menu 칼럼과 bottle 칼럼을 만들어 데이터를 원하는대로 만들수 있지만,
        : 문제는, 세트 칼럼은 리스트 요소개수가 일치하지 않는다. 
          만약 세트 칼럼의 리스트요소개수가 1개라면 각 메뉴의 세트수가 모두 하나의 값으로 매칭되는거라 문제없지만
          만약 세트 칼럼의 리스트요소개수가 2개라면 (예시 : [1,2] ) 메뉴명 칼럼의 리스트 요소개수를 절반으로 나눠 매칭해야 한다
          예를 들어, 메뉴명 칼럼 : ['한우죽','버섯죽','닭죽','전복죽'] 이고 / 세트 칼럼 : [1,2] 이라면
          앞절반인 한우죽과 버섯죽의 세트수는 1이고 / 뒤절반인 닭죽과 전복죽의 세트수는 2이다.
         
* 새로 만들 numbers 테이블에 menu 칼럼과 bottle 칼럼 외에 set 칼럼을 새로 만들어 
  메뉴별로 각 행이 구성되게 메뉴명 칼럼 데이터를 분할하여
  각 메뉴(예시:한우죽) 별로 "실출고병수"를 bottle 칼럼에 대응시키고 / "세트수"를 set 칼럼에 대응시켜 데이터가 들어가있는
  numbers 테이블을 만들고 싶은데 
  아래의 쿼리를 어떻게 변형해야 할까요
          
        
     

SELECT 
   REPLACE(REPLACE(REPLACE(SUBSTRING_INDEX(SUBSTRING_INDEX(a_t.`메뉴명`,',',numbers.n),',',-1),'"',''),'[',''),']','') as menu,
  REPLACE(REPLACE(SUBSTRING_INDEX(SUBSTRING_INDEX(a_t.`메뉴별 실출고병수`,',',numbers.n),',',-1),'[',''),']','') as bottle
FROM 
  (SELECT 1 n union all select 2 union all select 3 union all select 4 union all select 5 union all
   select 6 union all select 7 union all select 8 union all select 9 union all select 10 union all
   select 11 union all select 12 union all select 12 union all select 12 union all select 13 union all
   select 14 union all select 15 union all select 16 union all select 17 union all select 18 union all
   select 19 union all select 20 union all select 21 union all select 22 union all select 23 union all
   select 24 union all select 25) as numbers
INNER JOIN a_t ON CHAR_LENGTH(a_t.`메뉴명`) - CHAR_LENGTH(REPLACE(a_t.`메뉴명`, ',', '')) >= numbers.n-1

by 우리집아찌 [2023.04.29 15:55:53]

테이블 데이터와

원하는 데이터를 올려주세요.

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