Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2008
    Messaggi
    1,316

    Left Join, e se il gruppo utente non esiste?

    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 )

  2. #2
    Utente di HTML.it L'avatar di dottwatson
    Registrato dal
    Feb 2007
    Messaggi
    3,012
    hai provato ad usare uan left join anche qui?

    codice:
    Inner Join users As u On ( s.sess_uid = u.user_id )
    Non sempre essere l'ultimo è un male... almeno non devi guardarti le spalle

    il mio profilo su PHPClasses e il mio blog laboweb

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2008
    Messaggi
    1,316
    grazie per aver risposto, ma non ti seguo...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.