$rech=$_bdd->query('select distinct num_carte,type_seance,nom_module from absence,seance,absence_justification,module where absence.id_absence=absence_justification.id_absence AND absence.id_seance=seance.id_seance AND seance.id_module=module.id_module GROUP BY num_carte,type_seance,nom_module having count(jus_admin="non")>4 ');
У меня этот код на моем сайте PHP, и когда я использую счетчик, я обнаружил, что счетчик не сравнивает jus_admin="non"
. Он игнорирует условие, поэтому он просто подсчитывает количество jus_admin и возвращает результат, который я не понял, почему он игнорирует условие !!!!!!!
count()
подсчитывает количество значений, отличных от NULL. Булевы в MySQL обычно равны 0 или 1.
Итак, ваша логика:
having count(jus_admin = 'non') > 4
возвращает только NULL
если jus_admin
равно NULL
. Это эквивалентно:
having count(jus_admin) > 4
Который, если он никогда не принимает NULL
, будет таким же, как:
having count(*) > 4
Я думаю, вы хотите sum()
а не count()
:
having sum(jus_admin = 'non') > 4
Для каждой возвращаемой группы потребуется не менее пяти значений 'non'
.