Ciao a tutti,
ho dei dubbi su come relazionare queste 2 tabelle
dove public indica se un gruppo è accessibile da tutti (0) o è privato (1)codice:groups +-----------+---------------------+--------+ | group_id | name | public | +-----------+---------------------+--------+
Dovrei recuperare la lista di tutti i gruppi che sono pubblici e privati (in questo caso devo controllare se l'utente è presente nella tabella user_groups) ed escludere quando l'utente è bannato (banned = 1).codice:user_groups +--------+-----------+-----------+--------+ | id | group_id | user_id | banned | +--------+-----------+-----------+--------+
Sono riuscito a fare questa query ma ho dei dubbi sul fatto che sia la soluzione migliore.codice:SELECT * FROM groups as g NATURAL LEFT OUTER JOIN user_groups as u WHERE (public = 1 or u.user_id = 14) and NOT EXISTS ( SELECT 1 FROM user_groups as b WHERE b.group_id = g.group_id and b.user_id = 14 and b.banned = 1) GROUP BY g.group_id ORDER BY members_count DESC LIMIT 0, 10
Che ne pensate?

Rispondi quotando