使用“查询”构建器从三个表codeigniter获取数据

时间:2016-01-04 05:50:07

标签: php mysql codeigniter

我在数据库中有三个表。

1.george_holiday_users(ID,的package_id,姓名,电子邮件)

2.george_holiday_passengers(ID,USER_ID,类型,姓名,年龄,性别)

3.george_packages(id,package_name,description)

现在我想从三个表中选择数据 george_holiday_users,george_packages和george_holiday_passengers表,其中george_holiday_users.id = george_holiday_passengers.user_id和george_holiday_users.package_id = george_packages.id

    $this->db->select('*');
           $this->db->from('george_holiday_users');
           $this->db->join('george_holiday_passengers', 'george_holiday_users.id = george_holiday_passengers.user_id');
           $this->db->join('george_packages', 'george_packages.id = george_holiday_users.package_id');
           $query = $this->db->get();
return $query->result();

但我只会从george_holiday_users表中获取数据。

2 个答案:

答案 0 :(得分:1)

我的意见是,您可以删除george_holiday_passengers并将type,age,gender列添加到george_holiday_users,以便查看;它只是holiday_users表的扩展数据 并使用新的数据库表构建查询。

$query = $this->db->select('u.*, p.package_name, p.description')
       ->from('george_holiday_users u')
       ->join('george_packges p', 'u.package_id = p.id', 'left')
       ->get();

return $query->result();

无论如何,您可以使用此查询获得结果。

$query = $this->db->select('u.*, hp.type, hp.name AS passengers_name, hp.age, hp.gender, p.package_name, p.description')
       ->from('george_holiday_users u')
       ->join('george_holiday_passengers hp', 'hp.user_id = u.id', 'left')
       ->join('george_packges p', 'u.package_id = p.id', 'left')
       ->get();

return $query->result();

你应该注意列名,因为在你的数据库中有很多具有相同名称的列,当你使用连接时它可能会影响你的查询等。

希望有所帮助。

答案 1 :(得分:0)

试试这个

$query = $this->db->select("SELECT * 
                FROM george_holiday_users 
                INNER JOIN george_holiday_passenger ON george_holiday_users.id = george_holiday_passengers.user_id
                INNER JOIN george_packages ON george_holiday_users.package_id = george_packages.id");
$result = $query->result_array();
return $result;