sql >> Database >  >> RDS >> Mysql

MySQL Query twee verschillende voorwaarden voor verschillende telling in 1 query

Deze vraag zou je moeten kunnen helpen. Het belangrijkste dat het doet, is ALLE afspraken voor het totaal tellen en vervolgens SOM op een IF-status =voltooid om u zowel het totaal als het voltooide in dezelfde zoekopdracht te geven.

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

Ik zag ook dat je zei dat het een een-op-veel-relatie was. Relationele tabellen zoals jij hebt zijn echt voor Many to Many. De meest efficiënte manier om een ​​One to Many te hebben, is door de com_event_schedules_com_appointment_c te verwijderen. tabel en voeg een com_event_schedule_id . toe naar de com_appointments tafel.




  1. MySQL - DATE_ADD maandinterval

  2. Verwijder rijen van mysql-server uit een lijst met ID's C#

  3. Een tekenreeks converteren naar een mySql DECIMAL-type

  4. php include error kan het pad niet vinden