sql >> Base de Datos >  >> RDS >> Mysql

MySQL Consulta dos condiciones diferentes para diferentes recuentos en 1 consulta

Esta consulta debería poder ayudarte. Lo más importante que hace es contar TODAS las citas para el total y luego SUMA en un estado IF =completado para obtener tanto el total como el completado en la misma consulta.

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

Además, noté que dijiste que era una relación de uno a muchos. Las tablas relacionales como la que tiene son realmente para muchos a muchos. La forma más eficiente de tener uno a muchos es deshacerse de com_event_schedules_com_appointment_c tabla y agregue un com_event_schedule_id a las com_appointments mesa.