Cześć,

mam proste forum, które obecnie próbuję rozbudować o dostępność ze względu na grupy oraz dodać pewne wyjątki.
mam takie tabele:
FORUM_KATEGORIE
id_kategorii
nazwa_kategorii
ostatni_post
ilosc_watkow
ilosc_postow

FORUM_WATKI
id_watku
id_kategorii
id_usera
ostatni_post

FORUM_POSTY
id_postu
id_watku
id_usera
tresc_postu
data

FORUM_AUTORYZACJA
typ_autoryzacji (1,2,3) // 1 - blokada całej kategorii, 2 blokada dostępu do wątku
id_autoryzacji // id kategorii lub id watku
widocznosc (0,1) // 0 zablokowany, 1 widoczny
grupa


chcę wyświetlić listę 20 tematów w których ostatnio pisano z uwzględnieniem grupy i widoczności/zablokowania kategorii/wątków.
Mam takie zapytanie:
  1. SELECT id_watku, ostatni_post, id_kategorii FROM FORUM_WATKI WHERE id_watku NOT IN (SELECT typ_autoryzacji FROM FORUM_AUTORYZACJA WHERE grupa={$GRUPA} AND typ_autoryzacji=2 AND widocznosc=0) AND id_watku IN (SELECT id_watku FROM FORUM_WATKI WHERE id_kategorii NOT IN (SELECT id_autoryzacji FROM FORUM_AUTORYZACJA WHERE grupa={$GRUPA} AND widocznosc=0 AND typ_autoryzacji=1) ORDER BY ostatni_post DESC LIMIT {$LIMIT}

niestety nie bierze ono pod uwagę dostępnych dla danej grupy wątków umieszczonych w kategorii niedostępnej dla danej grupy

da się to jakoś rozszerzyć czy trzeba osobne zapytanie?