我正在尝试在活动记录中转换此查询
SELECT
crm_clients.id,
crm_clients.`moved_date`,
crm_clients.`contractor_id`
FROM
dev_pfands.`crm_clients`
WHERE crm_clients.`contractor_id` = 11
AND (
crm_clients.`status` = 9
OR crm_clients.`status` = 8
OR crm_clients.`status` = 7
)
AND crm_clients.id IN
(SELECT
crm_client_cheques.`client_id`
FROM
dev_pfands.`crm_client_cheques`)
AND crm_clients.`moved_date` BETWEEN '2014-08-01'
AND '2014-11-29 '
AND crm_clients.`contractor_id`<>''
GROUP BY crm_clients.`id我有问题的部分是
AND crm_clients.id IN
(SELECT
crm_client_cheques.client_id
FROM
dev_pfands.crm_client_cheques) `我尝试过where_in方法,但过了一段时间,我试图包含我的$this ->db_pfands -> where('crm_client_cheques.client id' ,'id');尝试,却遇到了错误,并且不知道如何克服这个问题。
最初的查询应该返回703行,当我删除了被卡住的部分时,它会增加到3045行,所以我需要把它包括在内。任何帮助都是非常感谢的。
发布于 2014-12-04 15:33:10
首先,你的代码中有一个错误。
$this->db_pfands->where('crm_client_cheques.client id', 'id');这将是
$this->db_pfands->where('crm_client_cheques.client_id', 'id');你必须提供正确的列名,据我所知,数据库的列名没有包含任何空格。
现在,我认为这个活动记录查询将帮助您获得结果。
$query = $this->db->select('crm_clients.id, crm_clients.moved_date, crm_clients.contractor_id')
->where('moved_date BETWEEN "2014-08-01" AND "2014-11-29"')
->where('contractor_id', 'id')
->where_in('status', [9,8,7])
->from('crm_clients')
->join('crm_client_cheques', 'crm_client_cheques.client_id = crm_clients.id')
->group_by('id')
->get();
$result = $query->result();也许你已经更改了几个名字,因为它们在不同的数据库中,但我相信你可以做到。
https://stackoverflow.com/questions/27245214
复制相似问题