在codeigniter中联接两个表时重复的数据

yvfmudvl  于 2022-12-07  发布在  其他
关注(0)|答案(3)|浏览(145)

我尝试使用连接获取数据,但数据重复,
控制器代码为:

public function searchjobs2()
{
    //$id=$_SESSION['id'];
    $lan = $_POST["picke"]; //var_dump($id);die(); 
    $value['list']=$this->Free_model->get_jobs($lan);//var_dump($value);die();
    $this->load->view('free/header');
    $this->load->view('free/searchjobs2',$value);
}

和模型:

public function get_jobs($lan)
{
    $this->db->select('*');
    $this->db->from("tbl_work_stats");
    $this->db->join("tbl_work", "tbl_work.login_id = tbl_work_stats.login_id",'inner');
    $this->db->where("language LIKE '%$lan%'");
    // $this->db->where('tbl_work_stats.login_id',$id);
    $this->db->order_by('insertdate','asc');

    $query=$this->db->get()->result_array();//var_dump($query);die();
    return $query;
}

我已经用

foreach ($list as $row){
    ...
}

用于刊登。

slmsl1lt

slmsl1lt1#

使用distinct将删除重复字段:

$this->db->distinct();
isr3a4wc

isr3a4wc2#

从我所看到的,你的查询有歧义,在连接语句中有一个错误,还有你的哪里喜欢是问题的一部分,我建议尝试这个即使有一些丢失的信息,找出你需要从第二个表连接的字段。

public function get_jobs($lan){
$this->db->select("tbl_work_stats.*, tbl_work.fields");
$this->db->from("tbl_work_stats");
$this->db->join("tbl_work", "tbl_work_stats.login_id = tbl_work.login_id","inner");
$this->db->where("tbl_work.language LIKE", "%" . $lan . "%" );
$this->db->order_by("tbl_work_stats.insertdate","asc");
$query=$this->db->get()->result_array();
return $query;}
svujldwt

svujldwt3#

你的意思是在login_id上加入吗?我猜那是正在登录的用户,对于tbl_work_stats和tbl_work的许多条目来说都是一样的。
您没有发布您模式,但是login_id看起来不像是要加入的正确内容。tbl_work.id = tbl_work_stats.tbl_work_id或类似的内容怎么样?
CI $db也返回self,因此您可以执行以下操作:

public function get_jobs(string $lan):array
{
  return $this->db->select()
     ->from('tbl_work_stats')
     ->join('tbl_work','tbl_work.id = tbl_work_stats.work_id')
     ->like('language',$lan)
     ->order_by('insertdate')
     ->get()
     ->result_array();
 }

相关问题