Mysql
 sql >> база данни >  >> RDS >> Mysql

MySQL заявка две различни условия за различен брой в 1 заявка

Това запитване трябва да може да ви помогне. Най-голямото нещо, което прави, е да преброи ВСИЧКИ ангажименти за общо и след това SUM при състояние IF =завършено, за да получите както общото, така и завършеното в една и съща заявка.

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

Освен това забелязах, че казахте, че това е връзка „един към много“. Релационни таблици като вас са наистина за много към много. Най-ефективният начин да имате Един към Много е да се отървете от com_event_schedules_com_appointment_c таблица и добавете com_event_schedule_id към com_appointments таблица.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да намерите данни от миналата седмица в MySQL

  2. Грешка при преименуването на колона в MySQL

  3. Тригерът не разпознава таблица (Задействане за разделяне на съдържанието на NEW.values ​​на няколко реда, за да се вмъкне в друга таблица)

  4. Ускоряване на (бавна) огромна база данни на WordPress

  5. Качване на Java файл в MySQL