Mysql
 sql >> Base de données >  >> RDS >> Mysql

MySQL Query deux conditions différentes pour un nombre différent dans 1 requête

Cette requête devrait pouvoir vous aider. La plus grande chose qu'il fait est de compter TOUS les rendez-vous pour le total, puis SUM sur un statut IF =terminé pour vous obtenir à la fois le total et le terminé dans la même requête.

SELECT
    sc.id,
    COUNT(ap.id) as total,
    SUM(IF(status = 'completed', 1, 0)) as completed
FROM
    com_event_schedules sc
LEFT JOIN
    com_event_schedules_com_appointment_c re
    ON re.com_event_schedules_com_appointmentcom_event_schedules_ida = sc.id
LEFT JOIN
    com_appointment ap
    ON re.com_event_schedules_com_appointmentcom_appointment_idb = ap.id
WHERE
    sc.deleted = 0
GROUP BY
    sc.id

De plus, je remarquais que vous disiez que c'était une relation One to Many. Les tables relationnelles comme vous en avez sont vraiment pour plusieurs à plusieurs. Le moyen le plus efficace d'avoir un One to Many est de se débarrasser du com_event_schedules_com_appointment_c table et ajoutez un com_event_schedule_id aux com_appointments tableau.