Mysql
 sql >> Database >  >> RDS >> Mysql

MySQL Query due diverse condizioni per un conteggio diverso in 1 query

Questa domanda dovrebbe essere in grado di aiutarti. La cosa più importante che fa è contare TUTTI gli appuntamenti per il totale e quindi SOMMA su uno stato SE =completato per ottenere sia il totale che il completato nella stessa query.

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

Inoltre, stavo notando che hai detto che era una relazione uno a molti. I tavoli relazionali come quelli che hai sono davvero per molti a molti. Il modo più efficiente per avere uno a molti è sbarazzarsi di com_event_schedules_com_appointment_c tabella e aggiungi un com_event_schedule_id agli com_appointments tabella.