У меня есть первый SQL-запрос, получающий таблицу с id_member в качестве параметра
$stmt = $mysqli -> prepare("SELECT a.id_alerte, a.nom_alerte, ar.id_roster, r.nom_roster, FROM alerte a, alerte_par_roster ar, roster_par_membre rm INNER JOIN roster r ON r.id_roster = rm.id_roster WHERE rm.id_roster = ar.id_roster AND ar.id_alerte = a.id_alerte AND rm.id_membre = ?"); $stmt->bind_param('i', $id_membre);
Мне нужно вставить второй запрос, подсчитывающий количество строк в другой таблице.
Второй запрос:
"SELECT COUNT(DISTINCT id_roster) FROM disponibilites_par_member_alertes WHERE id_member = ? AND id_alerte = ?"
Как вы можете заметить, id_member
идентичен в обоих запросах, но id_alerte
(используется как параметр второго запроса, является результатом первого запроса). Надеюсь, я поняла. Любая идея будет очень желанной
Я не совсем понимаю, что ваши запросы предназначены для выполнения. Это поможет получить четкую информацию о структуре таблицы и о том, что представляет собой каждое из полей. Я попытался сделать предположение на основе имен таблиц, но не могу быть уверенным, что это правильно.
Первое, что я сделал, это просто преобразовать ваше условие WHERE таким образом, чтобы каждая из таблиц была явно объединена. Это просто для удобства чтения.
SELECT a.id_alerte, a.nom_alerte, ar.id_roster, r.nom_roster FROM alerte a INNER JOIN alerte_par_roster ar ON ar.id_alerte = a.id_alerte INNER JOIN roster_par_membre rm ON rm.id_roster = ar.id_roster INNER JOIN roster r ON r.id_roster = rm.id_roster WHERE rm.id_membre = ?
Теперь мы объединяемся с другим запросом:
SELECT a.id_alerte, a.nom_alerte, ar.id_roster, r.nom_roster, rc.id_roster_count FROM alerte a INNER JOIN alerte_par_roster ar ON ar.id_alerte = a.id_alerte INNER JOIN roster_par_membre rm ON rm.id_roster = ar.id_roster INNER JOIN roster r ON r.id_roster = rm.id_roster LEFT JOIN ( SELECT id_membre, id_alerte, COUNT(DISTINCT id_roster) AS id_roster_count FROM disponibilites_par_member_alertes GROUP BY id_membre, id_alerte ) AS rc ON rc.id_membre = rm.id_membre AND rc.id_alerte = ar.id_alerte WHERE rm.id_membre = ?
С моими собственными сгенерированными данными я получаю такие результаты:
Если этого недостаточно для решения проблемы, вам нужно будет предоставить более подробную информацию о таблицах и дизайне.