Truy vấn này sẽ có thể giúp bạn. Điều quan trọng nhất mà nó làm là tính tổng TẤT CẢ các cuộc hẹn và sau đó là SUM trên trạng thái IF =đã hoàn thành để giúp bạn có được cả tổng số và tổng số đã hoàn thành trong cùng một truy vấn.
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
Ngoài ra, tôi đã nhận thấy bạn nói rằng đó là mối quan hệ Một - Nhiều. Các bảng quan hệ như bạn có thực sự dành cho Nhiều đến Nhiều. Cách hiệu quả nhất để có Một đến Nhiều là loại bỏ com_event_schedules_com_appointment_c
bảng và thêm com_event_schedule_id
tới com_appointments
bảng.