Я даже не знаю, как озаглавить этот вопрос, но я надеюсь, что это имеет смысл.
У меня есть три таблицы:
- Таблица пользователей и их данные
- Таблица групп и ее подробности
- Таблица групп с идентификатором поиска ее членов, которые взяты из таблицы пользователей или групп
3-я таблица имеетдва столбца:
- Идентификатор группы, который соответствует строке в таблице групп (2-й)
- Идентификатор участника, который соответствует строке в либо пользователей (1-й) или группы (2-й) таблицы
Примечания:
- Идентификаторы таблицы пользователей и групп уникальны друг для друга.Например, если у пользователя ID = 1, то ни у другого пользователя, ни у какой-либо группы не будет такого идентификатора.
- Группа может иметь в качестве участника пользователя или другую группу.
Мне нужно вывести представление 3-ей таблицы, полностью развернув все члены каждой группы, включая вложенные группы, дамп пути к группе и обработать бесконечные циклы.Надеюсь, этот пример проясняет:
1.пользователи
| ID | user_name |
|----|-----------|
| 1 | one |
| 2 | two |
| 3 | three |
| 4 | four |
| 5 | five |
2.группы
| ID | group_name |
|----|------------|
| 6 | six |
| 7 | seven |
| 8 | eight |
| 9 | nine |
| 10 | ten |
3.члены группы
| group_ID | member_ID |
|----------|-----------|
| 6 | 1 |
| 6 | 2 |
| 6 | 3 |
| 7 | 4 |
| 7 | 5 |
| 8 | 1 |
| 8 | 9 |
| 8 | 10 |
| 9 | 5 |
| 10 | 1 |
| 10 | 8 |
4.вывод / результат
| group_ID | user_ID | user_name | group_path
|----------|---------|-------------|------------
| 6 | 1 | one | six
| 6 | 2 | two | six
| 6 | 3 | three | six
| 7 | 4 | four | seven
| 7 | 5 | five | seven
| 8 | 1 | one | eight
| 8 | 5 | five | eight > nine
| 8 | 1 | one | eight > ten
| 8 | | [recursive] | eight > ten > eight
| 9 | 5 | five | nine
| 10 | 1 | one | ten
| 10 | 1 | one | ten > eight
| 10 | 5 | five | ten > eight > nine
| 10 | | [recursive] | ten > eight > ten