Php 如何在codeigniter中使用FIND_IN_SET()查询

Php 如何在codeigniter中使用FIND_IN_SET()查询,php,arrays,function,codeigniter,Php,Arrays,Function,Codeigniter,我有两张桌子——一张有出勤细节,另一张有学生细节。以下是表格结构: tbl_出席率 援助日期出勤率 1 2017-03-09 5,6,9 2 2017-04-06 12,6,10 清华大学学生 学生证名称 5约翰 6布莱恩 9Anna 10英里 苏珊 现在,我想在视图中显示缺席者的姓名,类似于say。例如: 约会缺席者 2017-03-09约翰,布莱恩,安娜 2017-03-06苏珊,布莱恩,马修 我试着用FIND_IN_SET()来做这件事……但似乎运气不好……有没有更好的方法来解决这个问题

我有两张桌子——一张有出勤细节,另一张有学生细节。以下是表格结构:

tbl_出席率 援助日期出勤率

1 2017-03-09 5,6,9
2 2017-04-06 12,6,10

清华大学学生 学生证名称

5约翰
6布莱恩

9Anna

10英里

苏珊

现在,我想在视图中显示缺席者的姓名,类似于say。例如:

约会缺席者

2017-03-09约翰,布莱恩,安娜

2017-03-06苏珊,布莱恩,马修

我试着用FIND_IN_SET()来做这件事……但似乎运气不好……有没有更好的方法来解决这个问题

更新 我改为使用这个查询,它只回显每行中第一个id的名称

    $query = $this->db
   ->select("tbl_attendance.*,tbl_students.name")
   ->from("tbl_attendance")
   ->join("tbl_students","tbl_students.student_id=tbl_attendance.attendance")
   ->where('FIND_IN_SET(tbl_students.student_id, tbl_attendance.attendance)')
   ->GROUP_BY('tbl_students.student_id')
   ->get()->result_array(); 

但是,由于每行有三个数字用逗号分隔,我希望其余的数字也能重复出现。

您可以尝试这样的查询

SELECT a.`date`,group_concat(s.student_name)  
FROM tbl_attendance a,tbl_students s  
WHERE FIND_IN_SET(s.st_id, a.attendance) group by `date`;
说明:
FIND_IN_SET
,用于在逗号分隔的字符串列表中查找字符串的位置

语法:

FIND_IN_SET(needle,haystack);
希望这能解决你的问题。

怎么样

$query = $this->db
    ->select("td.Date, GROUP_CONCAT(ts.student_name)")
    ->from("tbl_students AS ts")
    ->join("tbl_attendance AS ta","find_in_set(ts.st_id,ta.attendance)","left",false)
    ->get();

这很有效

$query = $this->db
    ->select("td.Date, GROUP_CONCAT(ts.student_name SEPARATOR ',')")
    ->from("tbl_students AS ts")
    ->join("tbl_attendance AS ta","find_in_set(ts.st_id,ta.attendance)<> 0","left",false)
    ->get();
$query=$this->db
->选择(“td.Date,GROUP_CONCAT(ts.student_name SEPARATOR',')”)
->来自(“tbl_学生作为ts”)
->加入(“tbl_作为助教出席”、“在助教集中查找(助教id、助教出席)0”、“左”,假)
->get();

此处逗号分隔的类别ID保存在“类别”行中,例如“12,15,7,19”

$category_ID = 15;
$this->db->select('*');
$this->db->from('products');
$this->db->where('FIND_IN_SET(“.$category_ID.”,'category'),'0');
$this->db->where('deleted','0');
$this->db->order_by('product_ID','DESC');


我希望这有助于CI开发人员使用在\u集合中查找\u

它显示MYSQL语法错误..我运气不好-(哦,糟糕-我更新了我的答案-左as第三个参数丢失了这是我得到的错误:您的SQL语法有错误;请查看与您的MariaDB服务器版本对应的手册,以了解要使用的正确语法(ts.st_id,ta.Attention))'在第3行Yeah-我更新了我的答案,因为我遗漏了第3个参数-请再试一次Query返回此错误->您的SQL语法有错误;检查与您的MariaDB服务器版本相对应的手册,以了解使用near'ts.st_id,ta.Attention)的正确语法。实际上,我想回显所有日期及其对应的缺勤人员列表。上面显示的只是一个例子…我var_转储了上面查询的结果,它用重复的名称重复了这么多次,就像这样“Achu,Achu,Achu,Achu,Achu,Achu,Achu,Achu,Achu,sruthy,sruthy,sruthy,sruthy,sruthy,sruthy,sruthy,sruthy,sruthy,sruthy,sruthy,sruthy,sruthy,我做了一些更改,请再次尝试在codeigniter中使用该查询…当我在codeigniter表单中尝试此查询时,我得到语法错误…所以你能帮我在这方面以及。。。