5 votes

CodeIgniter mySQL 2 table LEFT OUTER JOIN

Tout le monde.

J'utilise CodeIgniter, et je n'obtiens pas de résultats pour cette requête :

    $this->load->database();

    $this->db->select('*');
    $this->db->from('users');
    $this->db->join('show_guides', 'show_guides.user_id = users.user_id');
    $this->db->where('users.user_id', $user_id['user_id'], 'left outer');

    $query = $this->db->get();
    foreach ($query->result_array() as $row) {
        $results = $row;
    }

La table "users" contient toujours des résultats, mais il arrive que l'utilisateur n'ait pas de ligne dans la table "show_guides". Lorsque la table "show_guides" ne contient pas de résultats, la requête ne renvoie pas les résultats de la table "users".

$row n'existe pas lorsque 'show_guides' ne donne aucun résultat. Je n'obtiens des résultats que lorsque les deux tables contiennent des données avec la correspondance users.user_id .

Des suggestions ?

Merci !

EDITAR Pour éviter toute confusion, cette requête me donne les résultats dont j'ai besoin, mais je veux utiliser les objets db de CodeIgniter.

SELECT u.*,s.* 
FROM users u
LEFT OUTER JOIN show_guides s ON u.user_id = s.user_id
WHERE u.user_id = 155;

Cela donne des résultats même si show_guides est vide.

21voto

dispake Points 1863

Vous devez mettre votre "left outer" dans la fonction join(), pas dans la fonction where().

$this->db->join('show_guides', 'show_guides.user_id = users.user_id', 'left outer');

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X