id ...
tabela groups
id ...
tabela przypisań
g_id group_id NULL user_id NULL
g_id - grupa do której przypisujemy albo usera, albo inną grupę
1, NULL, 6 - przypisanie usera o id 6 do grupy o id 1
2, 1, NULL - przypisanie grupy o id 1 do grupy o id 2
Teraz user 6 należy do grupy 1 oraz 2 (do grupy 2 poprzed przypisanie grupy 1->2)
W skrajnym przypadku może być tak, że user będzie należał do kilkudziesięciu grup, a te grupy do kolejnych grup, kolejne do kolejnych i tak dalej.
Potrzebuję wyciągnąć wszystkie grupy do których należy user (łącznie z tymi, do których należy poprzez przysanie grup do innych grup)
Schemat musi być w miarę uniwersalny - nie może wykorzystywać rozwiązań dostępnych tylko w jednym systemie DB
Wolałbym uniknąć dodatkowej tabeli pomocniczej, w której trzymałbym przypisania user -> grupa, czyli w podanym wyżej przypadku
6, 1
6, 2
Jakieś pomysły jak to rozwiązać?
Szukam albo odpowiedniego zapytania (oczywiście nie, że wyciągamy najpierw pierwszy level przypisań, potem kolejny i kolejny, każdy osobnym zapytaniem, bo to będzie zabójcze)
albo jakiegoś pomysłu, jak przebudować strukturę bazy, żeby łatwo można było to wyciągnąć