Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何解决mysql中“子查询返回超过1行”的错误?_Mysql_Codeigniter - Fatal编程技术网

如何解决mysql中“子查询返回超过1行”的错误?

如何解决mysql中“子查询返回超过1行”的错误?,mysql,codeigniter,Mysql,Codeigniter,我在codeigniter中提出了如下查询 $query = $this->db->query('SELECT tanggal, ( SELECT COUNT(*) from absensi_siswa where kehadiran="alfa" GROUP BY tanggal ) AS alfa, ( SELECT COUNT(*) from absensi_siswa where kehadiran="izin" GROUP B

我在codeigniter中提出了如下查询

$query = $this->db->query('SELECT tanggal,
            ( SELECT COUNT(*) from absensi_siswa where kehadiran="alfa" GROUP BY tanggal ) AS alfa,
            ( SELECT COUNT(*) from absensi_siswa where kehadiran="izin" GROUP BY tanggal ) AS izin,
            ( SELECT COUNT(*) from absensi_siswa where kehadiran="hadir" GROUP BY tanggal ) AS hadir,
            ( SELECT COUNT(*) from absensi_siswa where kehadiran="sakit" GROUP BY tanggal ) AS sakit
            FROM absensi_siswa GROUP BY tanggal');
    return $query->result();
您的每个子条款选择count*。。返回超过1行,从您的查询中,我假设您需要基于kehadiran的不同值的单个计数,您可以将查询简化为

SELECT tanggal,
SUM(CASE WHEN kehadiran="alfa" THEN 1 ELSE 0 END) AS alfa,
SUM(CASE WHEN kehadiran="izin" THEN 1 ELSE 0 END) AS izin,
SUM(CASE WHEN kehadiran="hadir" THEN 1 ELSE 0 END) AS hadir,
SUM(CASE WHEN kehadiran="sakit" THEN 1 ELSE 0 END) AS sakit
FROM absensi_siswa 
GROUP BY tanggal

使用mysql,您可以使sum子句更短,比如将sumkehadiran=alfa作为alfa,将表达式放在suma=a中将返回布尔值0/1或true/false,您将得到基于表达式的计数。祝您有个美好的一天。