Con questa query estraggo tutti i dati utente:

Codice PHP:
$sql["extract_session"] = <<<SQL
    Select s.* , u.* , g.* , Count(mp.pm_read) As TotPm
        From sessions As s
        Inner Join users As u On ( s.sess_uid = u.user_id )
        Left Join groups As g On ( g.group_id = u.user_group )
        Left Join pm As mp On ( mp.pm_read = '0' And mp.pm_receiver = u.user_id )
    Where s.sess_hash = '%s' And s.sess_ip = '%s' And s.sess_useragent = '%s' Limit 1
SQL; 
E poi con un if controllo se la "Left Join groups" ha gli elementi dell'array validi ( magari il gruppo a cui appartiene l'utente è stato cancellato e quindi, giustamente, gli elementi hanno valore "vuote" ).

Codice PHP:
        /* Controlla che il gruppo a cui appartiene l'utente non sia stato cancellato */
        
if ( $this->session["group_id"] == "" )
        {
            
$query $this->db->execute"extract_group" );
            
$query $this->db->execQuery(      $query );
            
$query $this->db->fetch_array$query );
            
            foreach ( 
$query as $key => $value )
            {
                
$this->session[$key] = $value;
            }
        } 
$this->db->execute( "extract_group" ); sta per : Select * From groups Where group_id = '2'

Quindi se $this->session["group_id"] no ha valore ( = il gruppo è stato cancellato ) esegue una query che estrae i dati dal gruppo normale degli utenti e lo aggiunge all'array $this->session.

Solo che preferirei evitare. Vorrei eliminare questo if e magari fare il controllo direttamente nella prima query. ( utlizzo mysql )