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