将带有两个逗号连接表的原始 SELECT SQL 转换为 CodeIgniter 的查询构建器语法

问题描述 投票:0回答:3

如何在 codeigniter 活动记录中编写此查询

select 
a.parent_cat_id,a.parent_cat_name, b.child_cat_id,b.child_cat_name,
c.sub_child_cat_id,c.sub_child_cat_name
FROM parent_categories a,child_categories b,sub_child_categories c 
WHERE a.parent_cat_id=b.parent_cat_id AND b.child_cat_id=c.child_cat_id

尝试过这个,但显示 0 结果

$this->db->select('a.parent_cat_id,a.parent_cat_name, b.child_cat_id,b.child_cat_name,c.sub_child_cat_id,c.sub_child_cat_name');
$this->db->from('parent_categories a,child_categories b,sub_child_categories c');
$this->db->where('a.parent_cat_id','b.parent_cat_id'); 
$this->db->where('b.child_cat_id','c.child_cat_id'); 
$result = $this->db->get()->result_array();

当我回显上面的 ci 查询时,我得到

SELECT `a`.`parent_cat_id`, `a`.`parent_cat_name`, `b`.`child_cat_id`, `b`.`child_cat_name`, `c`.`sub_child_cat_id`, `c`.`sub_child_cat_name`
FROM `parent_categories` `a`, `child_categories` `b`, `sub_child_categories` `c`
WHERE `a`.`parent_cat_id` = 'b.parent_cat_id'
AND `b`.`child_cat_id` = 'c.child_cat_id' 

enter image description here

php sql codeigniter join query-builder
3个回答
1
投票

尝试在查询中更改

$this->db->where
,如下所示 -

$this->db->select('a.parent_cat_id,a.parent_cat_name, b.child_cat_id,b.child_cat_name,c.sub_child_cat_id,c.sub_child_cat_name');
    $this->db->from('parent_categories a,child_categories b,sub_child_categories c');
    $this->db->where("a.parent_cat_id = b.parent_cat_id"); 
    $this->db->where("b.child_cat_id = c.child_cat_id");
    $result = $this->db->get()->result_array();

1
投票

您必须使用连接查询,这是代码片段

    $this->db->select('a.parent_cat_id,a.parent_cat_name, b.child_cat_id,b.child_cat_name,c.sub_child_cat_id,c.sub_child_cat_name'); 
    $this->db->from('parent_categories a');
    $this->db->join('child_categories b', 'b.parent_cat_id = a.parent_cat_id', 'left'); 
    $this->db->join('sub_child_categories c', 'c.child_cat_id = b.child_cat_id', 'left'); 
    $query = $this->db->get();
    $res =  $query->result();

-1
投票

我没有你的表结构和数据可供检查。但是,试试这个。会起作用的。

 $this->db->select('a.parent_cat_id,a.parent_cat_name, b.child_cat_id,b.child_cat_name,c.sub_child_cat_id,c.sub_child_cat_name');
 $this->db->from('parent_categories a,child_categories b,sub_child_categories c');
 $this->db->join('a.parent_cat_id','b.parent_cat_id'); 
 $this->db->join('b.child_cat_id','c.child_cat_id');
 $this->db->get();
© www.soinside.com 2019 - 2024. All rights reserved.