如何在 Codeigniter 中将相关子查询用于活动记录查询
How to use correlated subquery into Active record query in Codeigniter
我正在努力从不同的表格中获取客户详细信息。我已经创建并测试了这个查询,它工作正常。问题是如何将用户查询(转换)为 Active Records 查询。谢谢你。
SELECT c.cust_id, `c`.`cust_contact_name`, `c`.`cust_active_flag`,
(select COUNT(`pm`.`cust_id`) from property_master as pm
Where pm.cust_id = c.cust_id) as prop_count,
(select a.addr_phoneno1 from address as a
WHERE a.cust_id = c.cust_id AND a.addr_type_flag IN ('C', 'CP')) as cust_phone,
(select count(ci.cust_id) from customer_inquiry as ci
WHERE ci.cust_id = c.cust_id) as inquiry_count,
(select max(inq_date) from customer_inquiry as ci
WHERE ci.cust_id = c.cust_id) as last_inq_date
FROM customer as c
GROUP BY c.cust_ID
CodeIgniter Active record 类 不直接支持子查询。您可以使用任何第 3 方库,例如 NTICompass CodeIgniter-Subqueries 或 $this->db->query();
来执行您的查询。
不过,您可以使用以下方式。但我会建议使用 $this->db->query();
$this->db->select('c.cust_id, `c`.`cust_contact_name`, `c`.`cust_active_flag`,
(select COUNT(`pm`.`cust_id`) from property_master as pm ' Where pm.cust_id = c.cust_id) as prop_count, (select a.addr_phoneno1 from address as a
WHERE a.cust_id = c.cust_id AND a.addr_type_flag IN ('C', 'CP')) as cust_phone,
(select count(ci.cust_id) from customer_inquiry as ci
WHERE ci.cust_id = c.cust_id) as inquiry_count,
(select max(inq_date) from customer_inquiry as ci
WHERE ci.cust_id = c.cust_id) as last_inq_date)
->from('customer c');
$this->db->group_by('c.cust_ID');
$result = $this->db->get();
我正在努力从不同的表格中获取客户详细信息。我已经创建并测试了这个查询,它工作正常。问题是如何将用户查询(转换)为 Active Records 查询。谢谢你。
SELECT c.cust_id, `c`.`cust_contact_name`, `c`.`cust_active_flag`,
(select COUNT(`pm`.`cust_id`) from property_master as pm
Where pm.cust_id = c.cust_id) as prop_count,
(select a.addr_phoneno1 from address as a
WHERE a.cust_id = c.cust_id AND a.addr_type_flag IN ('C', 'CP')) as cust_phone,
(select count(ci.cust_id) from customer_inquiry as ci
WHERE ci.cust_id = c.cust_id) as inquiry_count,
(select max(inq_date) from customer_inquiry as ci
WHERE ci.cust_id = c.cust_id) as last_inq_date
FROM customer as c
GROUP BY c.cust_ID
CodeIgniter Active record 类 不直接支持子查询。您可以使用任何第 3 方库,例如 NTICompass CodeIgniter-Subqueries 或 $this->db->query();
来执行您的查询。
不过,您可以使用以下方式。但我会建议使用 $this->db->query();
$this->db->select('c.cust_id, `c`.`cust_contact_name`, `c`.`cust_active_flag`,
(select COUNT(`pm`.`cust_id`) from property_master as pm ' Where pm.cust_id = c.cust_id) as prop_count, (select a.addr_phoneno1 from address as a
WHERE a.cust_id = c.cust_id AND a.addr_type_flag IN ('C', 'CP')) as cust_phone,
(select count(ci.cust_id) from customer_inquiry as ci
WHERE ci.cust_id = c.cust_id) as inquiry_count,
(select max(inq_date) from customer_inquiry as ci
WHERE ci.cust_id = c.cust_id) as last_inq_date)
->from('customer c');
$this->db->group_by('c.cust_ID');
$result = $this->db->get();