sql >> Databasteknik >  >> RDS >> Mysql

MySQL Fråga två olika villkor för olika räknas i en fråga

Den här frågan borde kunna hjälpa dig. Det största det gör är att räkna ALLA möten totalt och sedan SUMMA på en IF-status =slutförd för att få dig både summan och slutförda i samma fråga.

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

Jag märkte också att du sa att det var ett One to Many-förhållande. Relationstabeller som du har är verkligen för många till många. Det mest effektiva sättet att ha en One to Many är att bli av med com_event_schedules_com_appointment_c tabell och lägg till ett com_event_schedule_id till com_appointments bord.




  1. MySQL Välj både detta och det

  2. Hur man skapar ett index i Django utan driftstopp

  3. Hur kör man multipla insert-fråga i SQL med PHP på en gång?

  4. Autoinkrement i oracle till redan skapad tabell