patients: idpatients, iddistrict
district(dzielnica): iddistrict, name
teeth_services(usługa): idteeth_services, idpatient, service_date
Chce zrobić podsumowanie, ilu z poszczególnych dzielnic jest pacjentów w bazie, którzy mieli już wykonaną jakaś usługę (czyli taką jakby mapę pacjentów).
Narazie doszedłem tylko jak pobrać ilość pacjentów w poszczególnych dzielnicach:
SELECT district.name,patients.iddistrict, count(*) AS ile FROM district LEFT JOIN patients ON district.iddistrict = patients.iddistrict GROUP BY district.name, patients.iddistrict ORDER BY district.name ASC
Też chyba to zapytanie nie bardzo bo w wyniku mam:
name | iddistrict | ile
Rury | 2 |4
Felin | null |1
i tam gdzie mam w iddistrict null, w php jako ile musze wstawić 0 żeby to miało sens.
A teraz próbując zmienić to zapytanie aby pobierało pacjentów, którzy mieli wykonaną usługę wykombinowałem coś takiego (ŹLE):
SELECT district.name,patients.iddistrict, count(*) AS ile FROM district LEFT JOIN patients ON district.iddistrict = patients.iddistrict LEFT JOIN teeth_services ON teeth_services.idpatient = patients.idpatients GROUP BY district.name, patients.iddistrict ORDER BY district.name ASC
ALE nie działa poprawnie, ponieważ np. jak mam 2 pacjentów z dzielnicy, np. Rury, jeden miał w sumie wykonanych usług 5, a drugi 1 to w wyniku w kolumnie 'ile' zwraca mi 6 a ma zwrócić 2. Proszę o pomoc w poprawieniu tego.
Pozdrawiam.