SQL рекурсивные таблицы

У меня есть следующие таблицы, groups таблица, которая содержит иерархически приказанные группы и group_member который хранит, который группируется, пользователь принадлежит.

groups
---------
id  
parent_id
name

group_member
---------
id
group_id
user_id

ID  PARENT_ID  NAME
---------------------------
1   NULL       Cerebra
2   1          CATS 
3   2          CATS 2.0 
4   1          Cerepedia 
5   4          Cerepedia 2.0
6   1          CMS 

ID GROUP_ID USER_ID
---------------------------
1  1        3
2  1        4
3  1        5
4  2        7
5  2        6
6  4        6
7  5        12
8  4        9
9  1        10

Я хочу получить видимые группы для данного пользователя. То, что это должно сказать, что группы пользователь принадлежат и дети этих групп. Например, с вышеупомянутыми данными:

USER  VISIBLE_GROUPS
9     4, 5 
3     1,2,4,5,6
12    5 

Я получаю эти значения с помощью рекурсии и нескольких запросов базы данных. Но я хотел бы знать, возможно ли сделать это с единственным SQL-запросом для улучшения моей производительности приложения. Я использую MySQL.

7
задан David Archibald 16 September 2019 в 22:23
поделиться