Причина, по которой ваш опубликованный запрос не работает должным образом, заключается в том, что в сгенерированном запросе есть лишний пробел после символов «запад» и «юг».
Вы всегда должны группировать свою логику с ()
, чтобы было проще поддерживать и понимать код - и держаться подальше от ошибок, подобных этой.
AND
связывает сильнее, чем OR
, поэтому то, что вы имели ранее, было таким же, как и запись:
(P.Gender = 'female' AND P.Area = 'west') OR P.Area = 'south' -- not correct
Вместо использования P.Area = 'west' OR P.Area = 'south'
вы можете использовать оператор IN
, как показано в следующем примере:
SELECT D.DiseaseName, COUNT(D.Patient_ID) AS PNO
FROM PatientAffectDisease D
INNER JOIN patient P ON D.Patient_ID = P.Patient_ID
WHERE P.Gender = 'female' AND P.Area IN ('west','south')
GROUP BY D.DiseaseName
command10.CommandText = "SELECT D.DiseaseName, COUNT(D.Patient_ID) AS PNO FROM PatientAffectDisease D INNER JOIN patient P ON D.Patient_ID = P.Patient_ID WHERE P.Gender = 'female' AND P.Area IN ('west','south') GROUP BY D.DiseaseName"