我在数据库中有两个表
1.main_category字段(id,main_name);
2.sub_category字段(id,main_id,sub_name)
这里main_id
用于连接两个表,我希望得到如下数组的结果
Array
(
[CCTV] => Array
(
[0] => Array
(
[id] => 1
[main_id] => 4
[name] => first
)
[1] => Array
(
[id] => 3
[main_id] => 4
[name] => second
)
[2] => Array
(
[id] => 4
[main_id] => 4
[name] => second
)
)
[Security Camera] => Array
(
[0] => Array
(
[id] => 5
[main_id] => 5
[name] => first
)
[1] => Array
(
[id] => 6
[main_id] => 5
[name] => second
)
[2] => Array
(
[id] => 7
[main_id] => 5
[name] => second
)
)
)
此处数组的key
为main_name
字段,来自main_category
表,每个键的关联数组包含与条件匹配的行
where main_category.id=sub_category.main_id
我希望db query能够实现上述结果。是否可以使用连接查询?
答案 0 :(得分:1)
这是连接查询的结构,您可以根据自己的要求更改它。
function myfun($id){
$query = "select main_cat.*, sub_cat.* from main_category main_cat
Join sub_category sub_cat
ON main_cat.id = sub_cat.main_id
where main_cat.id = $id";
$data = $this->db->query($query);
return $data->result_array();
}
希望这会对你有所帮助。
答案 1 :(得分:0)
尝试理解查询并根据需要进行更改.main_cat作为表1,sub_category作为表2。你已经给出了半解决方案sub_category.employee_id = main_cat.employee_id
$this->db->select("main_cat.id,main_cat.main_id,main_cat.name,sub_category.id,sub_category.main_id,sub_category.sub_name");
$this->db->from('main_cat');
$this->db->join('sub_category', 'sub_category.employee_id = main_cat.employee_id');
$this->db->where('id', $id);
$query = $this->db->get();
return $query->result();
答案 2 :(得分:0)
你好你使用codeignitor所以使用codeignitor mysql查询结构这是将来的最佳实践
$this->db->select("main_cat.id,main_cat.main_id,main_cat.name,sub_category.id,sub_category.main_id,sub_category.sub_name");
$this->db->from('main_cat');
$this->db->join_using('sub_category', 'employee_id');
$this->db->where(tablename.'id', $id);
$query = $this->db->get();
return $query->result();
employee_id在两个表中都很常见,因此请使用join_using,否则您可以像这样使用join
$this->db->join('sub_category', 'sub_category.employee_id = main_cat.employee_id');