Как решить ошибку «Подзапрос возвращает более 1 строки» в MySQL? - PullRequest
0 голосов
/ 27 мая 2018

Я сделал запрос, такой как в 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();

1 Ответ

0 голосов
/ 27 мая 2018

Каждый ваш подпункт (select 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 еще короче, как sum(kehadiran="alfa") as alfa, если поместить выражение в sum(a=a), будет возвращено логическое значение 0/1 или true / false, и вы получите счет на основе вашего выражения

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...