sql >> Databáze >  >> RDS >> Mysql

MySQL dotazujte dvě různé podmínky pro různý počet v 1 dotazu

Tento dotaz by vám měl pomoci. Největší věc, kterou dělá, je spočítat VŠECHNY schůzky jako součet a pak SUM na stav KDYŽ =dokončeno, abyste získali celkový i dokončený počet ve stejném dotazu.

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

Také jsem si všiml, že jste říkal, že to byl vztah One to Many. Relační tabulky, jako máte vy, jsou skutečně pro mnohé pro mnohé. Nejúčinnějším způsobem, jak mít One to Many, je zbavit se com_event_schedules_com_appointment_c tabulku a přidejte com_event_schedule_id do com_appointments tabulka.




  1. Nelze se připojit k mysql z visual studia 2015

  2. Rozdíl mezi použitím REFERENCES s CIZÍM KLÍČEM a bez něj?

  3. Co je to „vícedílný identifikátor“ a proč jej nelze svázat?

  4. Překlenutí mezery v Azure:Spravované instance