Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MySQL Query zwei verschiedene Bedingungen für unterschiedliche Anzahl in 1 Abfrage

Diese Abfrage sollte Ihnen helfen können. Das Größte, was es tut, ist, ALLE Termine für die Gesamtzahl zu zählen und dann SUMME bei einem IF-Status =abgeschlossen, um Ihnen sowohl die Gesamtzahl als auch die abgeschlossenen in derselben Abfrage zu erhalten.

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

Außerdem ist mir aufgefallen, dass Sie sagten, es sei eine Eins-zu-Viele-Beziehung. Relationale Tabellen, wie Sie sie haben, sind wirklich für viele zu viele. Der effizienteste Weg, einen One-to-Many zu haben, besteht darin, com_event_schedules_com_appointment_c loszuwerden Tabelle und fügen Sie eine com_event_schedule_id hinzu zu den com_appointments Tabelle.