Я пытаюсь реализовать функцию поиска с разбивкой на страницы по иерархическому набору данных.
Важно НЕ использовать внутренний выбор
Это моя таблица задач, я использование supermother_id для определения иерархических групп
| id | name | mother_id | supermother_id | depth |
------------------------------------------------------
| 1 | Task 1 | null | 1 | 1 |
| 2 | Task 1.1 | 1 | 1 | 2 |
| 3 | Task 2 | null | 3 | 1 |
| 4 | Task 2.1 | 3 | 3 | 2 |
Теперь, скажем, я хочу запросить задачи, содержащие в своем имени «1», с ограничением до 2 результатов.
SELECT name
FROM tasks
WHERE name LIKE '%1%'
ORDER BY supermother_id
LIMIT 2
Это вернет me Task 1
и Task 1.1
Что я на самом деле хочу, так это чтобы он возвращал Task 1
, Task 1.1
и Task 2.1
, потому что первые два находятся в одной группе, я хочу LIMIT
рассматривать их как единое целое.
Так как я хочу, чтобы LIMIT 2
возвратил 3 записей, LIMIT
, вероятно, не тот инструмент ...
Итак, Я хочу, чтобы LIMIT
учитывал только различные значения supermother_id
, возможно ли это в одном запросе?