2016-06-22 5 views
1

に2つの結果を参加私はCodeIgniterので新しいプロジェクトを開始し、私は、ユーザーと投稿のための3つのテーブルを作成し、好きな本CodeIgniterの

ユーザテーブルには、これらのレコードを持っているよう

  1. USER_ID
  2. フルネーム
  3. ユーザ名

ポストテーブルには、これらのレコードがあります

  1. post_idの
  2. は、作成者の保存フィールドをUSER_ID
  3. タイトル
  4. USER_ID

などテーブル

  1. をUSER_ID Like_ID
  2. USER_ID
  3. 私はこの3つのテーブルに参加したいと私はそれを行うことができますが、私はこのような2つの結果を結合する必要があると私は私が

    $this->db->select('*'); 
        $this->db->from('Post'); 
        $this->db->join('User', 'User.User_ID = Post.User_ID', 'left'); 
        $query = $this->db->get(); 
        return $query->result(); 
    

    この

    何ができるのか分からない
  4. post_idの

$this->db->select('*'); 
    $this->db->from('Like'); 
    $this->db->where('User_ID' = $id); 
    $query = $this->db->get(); 
    return $query->result(); 

、その後は一緒に

と、これらの結果を結合する私を助けてください

+0

で複数のテーブルを結合することができますか?あなたが得たいものを説明するためにダミーのデータを与えることができますか? あなたは単一のSQLクエリでそれを行うことはできますか? – Didi

+0

正確にどのデータが必要ですか?比較するフィールドは何ですか? –

+0

私は最初の結果を2番目の結果と結びつける必要があります または 私はすべての投稿を選択する必要があり、現在のユーザーはどちらの投稿が好きなのかを理解しています –

答えて

1

質問を正しく理解している場合は、現在のユーザーが好きな投稿を特定したいと考えています。 SQL文は次のようにSGのようになります。

select p.*, u.*, l.user_id as like_user_id 
from post p 
inner join user u on u.user_id=p.user_id -- I do not think you need a left join here 
left join `like` l on p.post_id=l.post_id and l.user_id=$id 

私はlikeテーブルが残っている共通post_idフィールドを使用してpostテーブルに参加しました。 l.user_idがnullの場合、現在のユーザーは投稿を気に入らない。上記のクエリと第1のコード番号コードに基づいて、このクエリのcodeigniterバージョンを作成できるはずです。

1

あなたは正確に何をしたいか、単一のCodeIgniterのクエリ

$this->db->select('*'); 
$this->db->from('Post'); 
$this->db->join('User', 'User.User_ID = Post.User_ID', 'left'); 
$this->db->join('Like','Like.Post_ID = Post.Post_ID AND User.User_ID = $id','left'); 
$query = $this->db->get(); 
return $query->result();