Mysql
 sql >> Baza danych >  >> RDS >> Mysql

MySQL Zapytanie o dwa różne warunki dla różnej liczby w 1 zapytaniu

To zapytanie powinno być w stanie Ci pomóc. Najważniejszą rzeczą, jaką robi, jest liczenie WSZYSTKICH spotkań jako suma, a następnie SUMA w statusie IF =zakończone, aby uzyskać zarówno sumę, jak i ukończone w tym samym zapytaniu.

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

Zauważyłem też, że powiedziałeś, że to była relacja „jeden do wielu”. Stoły relacyjne, takie jak ty, są naprawdę dla wielu do wielu. Najskuteczniejszym sposobem uzyskania opcji „jeden do wielu” jest pozbycie się com_event_schedules_com_appointment_c tabelę i dodaj com_event_schedule_id do com_appointments tabela.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Najlepszy sposób na stwierdzenie braku 3 lub więcej kolejnych rekordów

  2. Lepszy sposób na wygenerowanie tej tablicy json z danych MySql za pomocą php

  3. Zrozumienie widoków w SQL

  4. limit podzapytań mySQL

  5. Automatyczne usuwanie wygasłych wierszy danych w MySQL