Разделите строку на несколько столбцов, используя пробелы

#mysql

#mysql

Вопрос:

У меня есть база данных с примерно 200 категориями, однако они не классифицированы должным образом.

Возьмем в качестве примера следующее:

prod_id prod_cat pc_code
1 101 моющее средство для посудомоечной машины 1
2 102 стиральный порошок 2
3 501 одноразовые подгузники 5
4 502 одноразовые подгузники 5

Я не могу сгруппировать их по коду pc_code, так как на самом деле они представляют собой 2 подкатегории (по крайней мере) на код pc_code.

Я хотел бы сгруппировать их по «моющим средствам» или «подгузникам» (их 197), и я не могу или предпочел бы этого не делать:

 SELECT  prod_cat   FROM  markets.products  WHERE  pc_code = 1  GROUP BY pc_code  ORDER BY pc_code;  

для каждой из 197 категорий. Хотя я знаю, что если бы я реализовал цикл for, например, в R, я мог бы получить группу для каждой категории.

Однако я подумал, что было бы чище разделить поле prod_cat на:

prod_id прод_кат_но prod_sub_cat prod_cat pc_code
1 101 посудомойка моющее средство 1
2 102 прачечная моющее средство 2
3 501 расходный материал подгузники 5
4 502 одноразовый подгузники 5

И сгруппировать по prod_cat. Поэтому я хотел бы разделить столбец посередине на три столбца, используя пробелы, но я понятия не имею, как это сделать.

Заранее большое вам спасибо.

Комментарии:

1. Воспользуйся SUBSTRING_INDEX(SUBSTRING_INDEX(value, ' ', number), ' ', -1) . Для первого числового значения вы можете использовать простое value 0 .

2.Я хотел бы сгруппировать их по «моющему средству» или «подгузникам» WHERE SUBSTRING_INDEX(prod_cat, ' ', -1) IN ('detergent', 'diapers') . И группировать по prod_cat GROUP BY SUBSTRING_INDEX(prod_cat, ' ', -1)

Ответ №1:

попробуйте это, может вам помочь!

 SELECT  prod_cat   FROM  markets.products    GROUP BY product_cat CONTAINS 'detergent' AND GROUP BY product_cat CONTAINS 'diapers'  

Комментарии:

1. Не пытайтесь изобрести свой собственный синтаксис — сервер откажется его понимать.