【问题标题】:How To Display Data in DataTables From Two Query result?如何从两个查询结果中显示数据表中的数据?
【发布时间】:2020-07-03 03:15:43
【问题描述】:

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

【问题讨论】:

    标签: php sql database laravel datatables


    【解决方案1】:

    是的,您可以合并两个查询的结果,您只需要将结果合并到一个数组/集合中。

    但是重要的是每个查询都根据数据表的列名和数据格式返回数据。

    你可以这样做:

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

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

    【讨论】:

      猜你喜欢
      • 2022-07-26
      • 2014-05-26
      • 2012-01-25
      • 2013-04-27
      • 2019-04-17
      • 1970-01-01
      • 2015-06-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多