php 从2个不同的表中计数数据

11dmarpk  于 12个月前  发布在  PHP
关注(0)|答案(2)|浏览(99)

我有2个不同的表“anakelangs”和“absen”我想从这两个表中检索数据,并显示在某种列表结果表中
这里的条件是:从anakelangs表中获取名称(此表中还有其他列),并从“kehadiran”表中获取“kehadiran”总数。在汇总表中显示它们。
阿纳卡朗人桌
| ID| nama|
| --|--|
| 1 |阿比耶尤|
| 2 |Ziggy|
餐桌缺席
| id_anak|全国运动|
| --|--|
| 1 |hadir|
| 2 |hadir|
| 1 |季代格哈迪尔|
| 2 |hadir|
| 1 |hadir|
| 2 |hadir|
表列表结果
| nama|凯哈迪兰|
| --|--|
| 阿比耶尤|Hadir = 2,tidak Hadir = 1|
| ziggy3| Hadir = 3,tidak Hadir = 0|
我在控制器中尝试过类似的东西

$rekapabsen = DB::table('anakelangs')
                    ->join('absen', 'anakelangs.id', '=', 'absen.id_anak')
                    ->select('anakelangs.id as id', 'anakelangs.nama_anak as name',
                      DB::raw("count(absen.id_anak) as count")) 
                    ->groupBy('anakelangs.id')
                    ->get();

字符串
但它的结局是:
SQLSTATE[42000]:返回错误或访问冲突:1055 'cakarelang.anakelangs.nama_anak'不在GROUP BY中
任何帮助都将不胜感激。谢谢你的时间。

mkh04yzy

mkh04yzy1#

您遇到的错误通常是由于使用GROUP BY时的MySQL严格模式而发生的。
就像这样:

$rekapabsen = DB::table('anakelangs')
    ->join('absen', 'anakelangs.id', '=', 'absen.id_anak')
    ->select('anakelangs.id as id', 'anakelangs.nama as name', 'absen.kehadiran as status')
    ->groupBy('anakelangs.id', 'anakelangs.nama', 'absen.kehadiran')
    ->get();

字符串
还建议:保持你的表在英语作为一个最佳做法

41ik7eoe

41ik7eoe2#

所有非聚合列必须是GROUP BY子句的一部分,这意味着您必须将anakelangs.nama_anak添加到其中。

相关问题