sql >> Database teknologi >  >> RDS >> Mysql

MySQL Query to forskellige betingelser for forskellige tæller i 1 forespørgsel

Denne forespørgsel burde kunne hjælpe dig. Den største ting, det gør, er at tælle ALLE aftaler i alt og derefter SUM på en IF-status =fuldført for at få dig både totalen og fuldførte i den samme forespørgsel.

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

Jeg lagde også mærke til, at du sagde, at det var et en til mange-forhold. Relationstabeller, som du har, er virkelig for mange til mange. Den mest effektive måde at have en One to Many på er at slippe af med com_event_schedules_com_appointment_c tabel og tilføj et com_event_schedule_id til com_appointments tabel.




  1. hvordan man forbinder til databasen på en anden server

  2. Sådan gør du Drupal 7 redigerbart felt i tabellen kun for admin

  3. Hvordan kan jeg oprette forbindelse til MySQL på en WAMP-server?

  4. mysql hente array