Всем привет! Уже заспамил весь гугл, но, то что он выдал, не смог применить.
Смог только найти, что подобная задача называется Longest common prefix(LCP)
Есть таблица example:
+----+-----------+------------------------+
| id | parent_id | path |
+----+-----------+------------------------+
| 1 | 7 | val10/val11/val12/val3 |
| 2 | 7 | val1/val2/val3/val5 |
| 3 | 7 | val1/val2/val3/val6 |
| 4 | 7 | val1/val2/val3/val7 |
| 5 | 7 | val1/val2/val3/val8 |
| 6 | 7 | val1/val2/val3/val9 |
+----+-----------+------------------------+
Как сгруппировать строки по самому длинному префиксу в столбце path относительно parent_id? Под префиксом имеется ввиду повторяющаяся часть строки начиная с начала.
Для таблицы выше вывод должен быть:
+-----------+------------------------+-------+
| parent_id | path | count |
+-----------+------------------------+-------+
| 7 | val1/val2/val3 | 5 |
| 7 | val10/val11/val12/val3 | 1 |
+-----------+------------------------+-------+
для генерации примера:
create table example (id int, parent_id int, path varchar(50));
insert into example
select 1, 7, 'val10/val11/val12/val3'
union select 2, 7, 'val1/val2/val3/val5'
union select 3, 7, 'val1/val2/val3/val6'
union select 4, 7, 'val1/val2/val3/val7'
union select 5, 7, 'val1/val2/val3/val8'
union select 6, 7, 'val1/val2/val3/val9'
Возможно, кто-то встречался с такой задачей, отзовитесь! )