Не зная точного расположения вашей базы данных, немного трудно быть уверенным, но у меня есть скрытое подозрение, что вы можете получать дубликаты Person
записей.Что произойдет, если у пользователя более одного visit
?Затем, поскольку один из запросов запрашивает уникальные PersonId
записи, а другой нет, вы получаете различное количество записей.
Вам придется решить, хотите ли вы среднее значение завсе посещения, или только за одно посещение, или что (это прямо не указано в вашем вопросе).
Ваш запрос в письменном виде кажется немного ... интересным?Попробуйте вместо этого:
SELECT a.PersonId, AVG(b.admitNumUlcers)
FROM (Person as a
INNER JOIN Visits as b
ON b.PersonId = a.PersonId)
INNER JOIN tblKentuckyCounties as c
ON (c.ID = a.County
AND c.Appalachian = No
AND c.Metro = No)
GROUP BY a.PersonId
Вот что происходит -
Этот запрос даст вам среднее количество язв на человека за все его посещения (где человек живет в округе, который не являетсяв Аппалачи или в районе метро).Предполагается, что Appalachian
и Metro
являются булевыми значениями (true/false
, или, по-видимому, здесь yes/no
...) - если это не так, то, возможно, потребуется изменить.