Объединение пользователей в группы по признаку обладания общими атрибутами SQL

Нужно сгруппировать строки в одну, если пользователи имеют общий id или атрибут. Я предполагаю, что для выполнения нужна функция INNER JOIN вместе с GROUP_CONCAT но я не знаю как это реализовать. Основная проблема заключается в том, что при условии когда два пользователя не обладают общим атрибутом, но при этом попадают в одну группу с одним и тем же третьим пользователем, то всех нужно определить в одну группу.

group_id, user_id, group_attributes
1, 1, "red, green, yellow, grey, purple, coffeemaker"
1, 2, "red, green, yellow, grey, purple, coffeemaker"
1, 3, "red, green, yellow, grey, purple, coffeemaker"
1, 4, "red, green, yellow, grey, purple, coffeemaker"
1, 5, "red, green, yellow, grey, purple, coffeemaker"
2, 6, "coffee, milk, croissant"
2, 7, "coffee, milk, croissant"
2, 8, "coffee, milk, croissant"

Создание таблицы и значений, чтобы затрачивать меньше вашего времени.

CREATE TABLE task (
    user_id INT(10) NOT NULL,
    attribute VARCHAR(50) NULL DEFAULT NULL);
INSERT INTO task (user_id, attribute)
VALUES
(1, 'red'),
(1, 'green'),
(2, 'green'),
(2, 'yellow'),
(3, 'grey'),
(3, 'coffeemaker'),
(4, 'grey'),
(4, 'purple'),
(5, 'purple'),
(5, 'red'),
(6, 'black'),
(7, 'black'),
(7, 'milk'),
(8, 'milk'),
(8, 'croissant');


Ответы (0 шт):