3

ユーザーを作成したユーザーを選択したいので、 users テーブルからすべてのユーザーを選択して結合するクエリを実行しようとしています。何らかの理由で、作成者の first_name と last_name に対して同じ値を同じユーザーとして取得していますが、必ずしもそうではありません。

user_Id, username, first_name, last_name, creator_id

1, ksmith, Kevin, Smith, 1
2, wscott, Will, Scott, 1
3, sjones, Steve, Jones, 1
4, twilliams, Tom, Williams, 4
public function get_with_creator()
{
    $this->db->select('users.user_id');
    $this->db->select('users.username');
    $this->db->select('users.first_name');
    $this->db->select('users.last_name');
    $this->db->select('users.created_at');
    $this->db->select('users.updated_at');
    $this->db->select("CONCAT(creator.first_name, ' ', creator.last_name) AS creator_name", FALSE); 
    $this->db->from($this->_table); 
    $this->db->join('users AS creator', 'users.user_id = creator.user_id', 'inner');
    return $this->db->get()->result();
}
4

2 に答える 2

6

のテーブルに参加していますusers.user_id = creator.user_id。したがって、同じ行を結合しているため、各フィールドに同じ名前が返されます。

に参加する必要がありますusers.creator_id = creator.user_id

デモ: http://sqlfiddle.com/#!2/e1309/2

于 2013-09-18T18:57:36.313 に答える
2
$this->db->join('users AS creator', 'users.creator_id = creator.user_id ', 'inner');
于 2013-09-18T19:01:28.397 に答える