Извлечение иерархических данных из таблицы MySQL - PullRequest
0 голосов
/ 24 марта 2020

Целевая платформа: MySQL 5.7

У меня есть таблица categories, которая представляет данные иерархических категорий:

+----+-----------------+-----------+
| id | name            | parent_id |
+----+-----------------+-----------+
|  1 | First category  |      NULL |
|  2 | Second category |         1 |
|  3 | Third category  |         2 |
|  4 | Other category  |         1 |
+----+-----------------+-----------+

Также у меня есть другая таблица (categories_relations), в которой хранятся данные отношения между категорией и всеми другими связанными (или связанными) категориями:

+----+-----------+-------------+
| id | parent_id | relation_id |
+----+-----------+-------------+
|  1 |         1 |           1 |
|  2 |         1 |           2 |
|  3 |         1 |           3 |
|  4 |         1 |           4 |
|  5 |         2 |           2 |
|  6 |         2 |           3 |
|  7 |         3 |           3 |
|  8 |         4 |           4 |
+----+-----------+-------------+

Можно ли получить отфильтрованные категории (например, по идентификатору) со всеми связанными другими категориями? Например, если бы я запросил категорию с ID = 1, результат запроса должен быть:

+----+-----------------+-----------+
| id | name            | parent_id |
+----+-----------------+-----------+
|  1 | First category  |      NULL |
|  2 | Second category |         1 |
|  3 | Third category  |         2 |
|  4 | Other category  |         1 |
+----+-----------------+-----------+

Если ID = 4:

+----+-----------------+-----------+
| id | name            | parent_id |
+----+-----------------+-----------+
|  1 | First category  |      NULL |
|  4 | Other category  |         1 |
+----+-----------------+-----------+

И так далее. Спасибо.

...