2014-03-01 42 views
0
select d.doctorFName,d.doctorLName ,count(ap.appointmentID) totalap, 
GROUP_CONCAT(DISTINCT s.speciality) specialities 
FROM tbl_doctors d 
INNER JOIN tbl_doctor_speciality ds ON (d.doctorID = ds.doctorID) 
INNER JOIN tbl_speciality s ON (s.spID = ds.spID) 
Inner join tbl_appointment ap on (ap.doctorID = d.doctorID) 
Inner join tbl_patients p on p.patientID = ap.patientID 
GROUP BY d.doctorID 
where d.status = 1 and DATE_FORMAT(ap.appDate, '%Y-%m') = '2013-10' 

我的下面的查詢給了我錯誤後​​,我在哪裏做錯了請幫助我嗎?查詢不符合DATE_FORMAT

where d.status = 1 and DATE_FORMAT(ap.appDate, '%Y-%m') = '2013-10' 

錯誤

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'where d.status = 1 and ds.spID and DATE_FORMAT(ap.appDate, '%Y-%m') = '2013-10' at line 9 
+0

它並沒有DATE_FORMATE工作? –

回答

1

where子句是放錯了地方。它那張group by前:

select d.doctorFName,d.doctorLName ,count(ap.appointmentID) totalap, 
     GROUP_CONCAT(DISTINCT s.speciality) specialities 
FROM tbl_doctors d 
INNER JOIN tbl_doctor_speciality ds ON (d.doctorID = ds.doctorID) 
INNER JOIN tbl_speciality s ON (s.spID = ds.spID) 
Inner join tbl_appointment ap on (ap.doctorID = d.doctorID) 
Inner join tbl_patients p on p.patientID = ap.patientID 
where d.status = 1 and DATE_FORMAT(ap.appDate, '%Y-%m') = '2013-10' 
GROUP BY d.doctorID; 
+0

使用上面的查詢後返回單個記錄,爲什麼? –

+0

如果有DATE_FORMAT(ap.appDate,'%Y-%m')='2013-10'未返回true,那麼可以獲取所有記錄,那麼我們返回0 –

+0

@MuhammadRashid。 。 。我不明白你最後的評論。我認爲這可能更適合另一個問題,包括樣本數據和期望的結果。 –

0

您需要交換這兩行

where d.status = 1 and DATE_FORMAT(ap.appDate, '%Y-%m') = '2013-10' 
GROUP BY d.doctorID