简体   繁体   English

Codeigniter连接语句和连接语句

[英]Codeigniter join statement with a join statement

I'm having an issue with converting the below statement into code on my model in the codeigniter framework. 我在将下面的语句转换为在Codeigniter框架中的模型上的代码时遇到问题。

SELECT mt_prs_groups.groupId, mt_prs_groups.groupName, mt_prs_administrators.administratorId
FROM mt_prs_status INNER JOIN (mt_prs_administrators INNER JOIN mt_prs_groups ON mt_prs_administrators.administratorId = mt_prs_groups.administratorId) ON (mt_prs_status.statusId = mt_prs_groups.statusId) AND (mt_prs_status.statusId = mt_prs_administrators.statusId)
WHERE (((mt_prs_status.status)="Active") AND ((mt_prs_administrators.administratorId)=3)) OR (((mt_prs_administrators.administratorId)=4));

On the model I have translated this to 在模型上,我将其翻译为

$this->db->select('mt_prs_groups.groupId, mt_prs_groups.groupName');
$this->db->from('mt_prs_status');
$this->db->join('mt_prs_administrators', 'inner');
$this->db->join('mt_prs_groups', 'mt_prs_administrators.administratorId = mt_prs_groups.administratorId AND mt_prs_status.statusId = mt_prs_administrators.statusId', 'inner');
$this->db->where('mt_prs_status.status="Active"');
$this->db->where('mt_prs_administrators.administratorId=3');
$this->db->or_where('mt_prs_administrators.administratorId=4');

This is giving me the error below 这给我下面的错误

Error Number: 1054 错误编号:1054

Unknown column 'inner' in 'from clause' “ from子句”中的未知列“ inner”

SELECT mt_prs_groups . 选择mt_prs_groups groupId , mt_prs_groups . groupIdmt_prs_groups groupName FROM mt_prs_status JOIN mt_prs_administrators USING ( inner ) INNER JOIN mt_prs_groups ON mt_prs_administrators . groupName FROM mt_prs_status JOIN mt_prs_administrators使用( inner )INNER JOIN mt_prs_groups ON mt_prs_administrators administratorId = mt_prs_groups . administratorId = mt_prs_groups administratorId AND mt_prs_status . administratorIdmt_prs_status statusId = mt_prs_administrators . statusId = mt_prs_administrators statusId WHERE mt_prs_status . statusId WHERE mt_prs_status status = "Active" AND mt_prs_administrators . status =“活动”和mt_prs_administrators administratorId = 3 OR mt_prs_administrators . administratorId = 3或mt_prs_administrators administratorId = 4 administratorId = 4

The query runs well when I put it directly on mysql but fails in codeigniter. 将查询直接放在mysql上时查询运行良好,但在codeigniter中失败。 The issue is the inner join is dependent on another inner join 问题是内部联接依赖于另一个内部联接

Please try this .I tried this into codeigniter 请尝试这个。我尝试了这个到codeigniter

$this->db->select('mt_prs_groups.groupId, mt_prs_groups.groupName');
$this->db->from('mt_prs_status');
$this->db->join('mt_prs_administrators', 'mt_prs_status.statusId = mt_prs_administrators.statusId','inner');
$this->db->join('mt_prs_groups', 'mt_prs_administrators.administratorId = mt_prs_groups.administratorId', 'inner');
$this->db->where('mt_prs_status.status="Active"');
$this->db->where('mt_prs_administrators.administratorId=3');
$this->db->or_where('mt_prs_administrators.administratorId=4');

Please try this format 请尝试这种格式

 $this->db->select('tbl_tasks.task_id,tbl_tasks.task, tbl_assign_task.user_id');
        $this->db->from(TBL_TASKS);
        $this->db->join(TBL_ASSIGN_TASK, 'tbl_tasks.task_id = tbl_assign_task.task_id');
        $this->db->where('tbl_assign_task.is_deleted', 0);
         $this->db->where('tbl_assign_task.user_id', $userId);
        $query = $this->db->get();

In this line - "$this->db->join('mt_prs_administrators', 'inner');" 在这一行-“ $ this-> db-> join('mt_prs_administrators','inner');” you are not defining joining condition, that's why you are getting an error because the format of the join in CI is - $this->db->join('table_name', 'column name on which we apply the join', 'type of join'); 您没有定义连接条件,这就是为什么会出现错误,因为CI中的连接格式为-$ this-> db-> join('table_name','我们对其应用连接的列名','type加入”);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM