我在数据库中有三个表。
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表中获取数据。
答案 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;