Мне нужно, чтобы результаты выглядели так:
PatientID Doctors Patient1 3 Patient2 2 Patient3 1
Забронированная таблица выглядит так:
GPS Table PatientID DoctorID DATE Patient1 Doctor1 2016-02-16 Patient1 Doctor1 2016-04-08 Patient1 Doctor2 2016-06-09 Patient2 Doctor3 2017-01-02 Patient2 Doctor6 2016-12-01 Patient3 Doctor1 2016-07-12
Есть больше заказов, но я просто приведу эту таблицу в качестве примера. Также мне нужно убедиться, что он не будет считать того же врача, если человек забронирован 2 раза для врача.
Код, который у меня есть сейчас:
select Bookings.PatientID, count(Bookings.DoctorID) as Doctors from Bookings where Bookings.DoctorID;
Спасибо за любую помощь!
Используйте группу по временной таблице с отдельными пациентами и врачами
select Patient, count(*) from ( select distinct Bookings.PatientID as Patient ,DoctorID as Doctors from Bookings ) as t Group by Patient;
Вы ищете count(distinct)
:
select b.PatientID, count(distinct b.DoctorID) as NumDoctors from Bookings b group by b.PatientID;
попробуй это :
SELECT PatientID, count(DoctorID) FROM `GPS ` group by PatientID
Я сделал это, и это сработало:
select PatientID as Patient, count(distinct(DoctorID)) as Doctors from Bookings, Patients group by PatientID;
Спасибо вам за помощь!