如何在两个查询结果的数据表中显示数据?

aiqt4smr  于 2021-07-29  发布在  Java
关注(0)|答案(1)|浏览(281)

我试着为学生做出勤数据报告。有两个列表,存在和不存在的数量。要显示“出席”列,我使用查询来计算数据包含“出席”时的出席人数。同时,为了计算缺席的人数,我使用了另一个查询,条件是数据包含'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();
aemubtdh

aemubtdh1#

是的,您可以合并两个查询的结果,您只需要将结果合并到一个数组/集合中。
但是,每个查询都必须根据datatable的列名和数据格式返回数据。
你可以做:

// Where $query1 and $query2 are the results collections
    $combined = [...$query1, ...$query2];
    return DataTables::of($combined)->make(true);

如果您有这两个查询,并且每个查询都为所需列返回相同的名称,并为所需列返回相同的数据格式,那么您可以按上述方式组合它们。

相关问题