Denne forespørgsel burde kunne hjælpe dig. Den største ting, det gør, er at tælle ALLE aftaler i alt og derefter SUM på en IF-status =fuldført for at få dig både totalen og fuldførte i den samme forespørgsel.
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
Jeg lagde også mærke til, at du sagde, at det var et en til mange-forhold. Relationstabeller, som du har, er virkelig for mange til mange. Den mest effektive måde at have en One to Many på er at slippe af med com_event_schedules_com_appointment_c
tabel og tilføj et com_event_schedule_id
til com_appointments
tabel.