我试着为学生做出勤数据报告。有两个列表,存在和不存在的数量。要显示“出席”列,我使用查询来计算数据包含“出席”时的出席人数。同时,为了计算缺席的人数,我使用了另一个查询,条件是数据包含'alpa'。
简言之,在我心目中我有两个查询结果
$query1 = ... ; $query2 = ... ;
我能在数据表中同时显示这两个吗?如果可能,如何在datatables中同时显示这两个属性?或者有没有其他方法只生成一个查询结果?
这是我的密码
$query1 = DB::table('presensi AS ps')
->join('jadwal AS j', 'ps.id_jadwal', '=', 'j.id')
->join('mahasiswa AS m', 'ps.id_mahasiswa_taklim', '=', 'm.nim')
->join('mahasiswa_taklim AS mt', 'ps.id_mahasiswa_taklim', '=', 'mt.nim')
->join('kelompok AS k', 'mt.kd_kelompok', '=', 'k.kd_kelompok')
->selectRaw('count(ps.status_kehadiran) as jumlah_kehadiran, ps.id_mahasiswa_taklim, m.nama_mahasiswa')
->selectRaw('max(j.pertemuan) as jumlah_pertemuan')
->where('k.id_muallim', $user->no_identitas)
->where('ps.status_kehadiran', 'Hadir')
->groupBy('ps.id_mahasiswa_taklim')
->groupBy('m.nama_mahasiswa')
->get();
return DataTables::of(query1)->make(true);
一点点谷歌翻译,帮助说英语的人弄清楚查询中发生了什么。
$query1 = DB::table('presence AS ps')
->join('schedule', 'ps.id_schedule', '=', 'schedule.id')
->join('college_student AS cs', 'ps.id_college_student_taklim', '=', 'cs.nim')
->join('college_student_taklim AS cst', 'ps.id_college_student_taklim', '=', 'cst.nim')
->join('group', 'cst.kd_group', '=', 'group.kd_group')
->selectRaw('count(ps.status_presence) as total_presence, ps.id_college_student_taklim, cs.name_college_student')
->selectRaw('max(schedule.meeting) as total_meeting')
->where('group.id_navigator', $user->no_identity)
->where('ps.status_presence', 'Present')
->groupBy('ps.id_college_student_taklim')
->groupBy('cs.name_college_student')
->get();
1条答案
按热度按时间aemubtdh1#
是的,您可以合并两个查询的结果,您只需要将结果合并到一个数组/集合中。
但是,每个查询都必须根据datatable的列名和数据格式返回数据。
你可以做:
如果您有这两个查询,并且每个查询都为所需列返回相同的名称,并为所需列返回相同的数据格式,那么您可以按上述方式组合它们。