我构建了两个表:一个用于列出服务,另一个用于将服务链接到每个部门。
表1包含列[s id,s name].[s_id,s_name]。
- -服务表,记录所有部门的所有服务。[1,安装Windows 10],[2,打印工资单]。
表2:服务分配由列[ss_id,ss_s_id_ss_d_id]组成。 - -services_assignments将服务与部门进行匹配。
我需要返回与department示例"NOT"匹配的服务。
我尝试在选择中使用带Where条件的JOIN,但结果不是下面的代码。
function get_services_for_assign(){ // for assigmnets
$this->db->select('*');
$this->db->from('services');
if($this->uri->segment('2')) {
$this->db->join('services_assignments','services.sr_id = services_assignments.ss_s_id','left');
$this->db->where_not_in('services_assignments.ss_d_id',$this->uri->segment('2'));
}
//$this->db->where('sr_display','1');
$data=$this->db->get();
return $data->result();
}
另一方面,我尝试手动编写它,如下所示。
function get_services_for_assign(){ // for assigmnets
$dep=$this->uri->segment('2');
$query = "SELECT sr.sr_id FROM services AS sr WHERE sr.sr_id = (SELECT sa.ss_s_id FROM services_assignments AS sa WHERE sa.ss_d_id = 1)";
$this->db->query($query);
$data=$this->db->get();
return $data->result();
}
我遇到了以下错误;我发现了许多与我的问题相似的结果,但我无法解决它。
发生数据库错误
错误编号:1096
未使用表格
选择 *
文件名:/xampp/htdocs/townteam/系统/数据库/数据库驱动程序. php
行号:691
我需要你的帮助,以返回的结果服务,没有使用的其他部门。
1条答案
按热度按时间gc0ot86w1#
您没有说明您使用的是哪个版本的CodeIgniter,或者在没有传递部门ID时预期的行为是什么。
这应该在CI3和CI4中都有效。如果使用CI4,你可能应该使用预准备语句。我找不到关于用CI将参数传递到多条件连接中的文档,所以我完整地写出了查询。