Как использовать group by в случае, когда значения ключей хранятся в одной ячейке с помощью запятых - PullRequest
0 голосов
/ 29 января 2019

У меня есть случай, когда у меня есть событие таблицы.Событие может быть различных категорий (много), как определено в таблице категорий.Таблица событий содержит категорию столбцов, в которой идентификаторы категорий, к которым относится событие, хранятся в одном поле varchar, разделенном запятыми.например.2,5,18.В таком случае я могу / если да, как я могу использовать группу в каждом конкретном случае.Мне нужно посчитать события на основе категорий.Но уникальное ключевое поле не было определено для категорий.например, таблица категорий

id   categoryname

1     music

2     dance

3     some other

таблица событий

id   eventname         category

1     dance plus        1,2

2     xyz got talent    1,3

Я рассчитываю подсчитать количество событий на основе категорий и ожидать результат в виде:

count    category

2         music

1         dance

1         some other

1 Ответ

0 голосов
/ 29 января 2019

Просто события с таблицей категорий, используя FIND_IN_SET:

SELECT categories.id, categories.categoryname, COUNT(*)
FROM categories
JOIN events ON FIND_IN_SET(categories.id, events.category) > 0
GROUP BY categories.id, categories.categoryname

И если вы хотите включить категории с 0 событиями:

SELECT categories.id, categories.categoryname, COUNT(events.id)
FROM categories
LEFT JOIN events ON FIND_IN_SET(categories.id, events.category) > 0
GROUP BY categories.id, categories.categoryname
...