2015-01-07 3 views
1

У меня есть связанный доступ к базе данных, которая является чем-то следующим образом:Союз в Microsoft Access

country year numTest AF 1990 30 AF 1991 45 AF 1992 50 AF 1993 55 AF 1994 50 BZ 1990 409 BZ 1991 509 BZ 1992 405 BZ 1993 874 CO 1990 0 CO 1991 0 CO 1992 0

Первый запрос я создал был просуммировать эти годы вместе для каждой страны (названный testPerformed)

SELECT TB_basicInfo.country, Sum(TB_hivTest.hivtest) AS SumOfhivtest 
FROM TB_hivTest INNER JOIN TB_basicInfo ON TB_hivTest.ID = TB_basicInfo.ID 
GROUP BY TB_basicInfo.country; 

Но сейчас я хотел бы, чтобы исключить какую-либо страну с суммой меньше 1. Таким образом, я создал новый запрос следующим образом: (названный testPerformed> 1)

SELECT testPerformed.country, testPerformed.SumOfhivtest 
FROM testPerformed 
WHERE ((testPerformed.SumOfhivtest)>1); 

так естественно, что CO будет исключен, и это работает правильно, если я запустил каждый запрос отдельно. Однако есть ли способ объединить это в один запрос.

Я устал:

SELECT TB_basicInfo.country, Sum(TB_hivTest.hivtest) AS SumOfhivtest 
FROM TB_hivTest INNER JOIN TB_basicInfo ON TB_hivTest.ID = TB_basicInfo.ID 
GROUP BY TB_basicInfo.country 
UNION 
SELECT TB_basicInfo.country, SumOfhivtest 
WHERE SumOfhivtest > 0; 

но доступ не нравится этот запрос, как это подсказывает мне, чтобы войти в SumOfhivtest

ответ

3

Если я понимаю, что вы пытаетесь сделать правильно, попробуйте следующее:

SELECT TB_basicInfo.country, Sum(TB_hivTest.hivtest) AS SumOfhivtest 
FROM TB_hivTest INNER JOIN TB_basicInfo ON TB_hivTest.ID = TB_basicInfo.ID 
GROUP BY TB_basicInfo.country 
HAVING Sum(TB_hivTest.hivtest) > 0; 
+0

Perfecto! Я не знаком с 'HAVING', не возражаете ли вы расширить, почему это работает над UNION? –

+1

HAVING похож на WHERE, за исключением того, что вы используете HAVING для агрегатных функций во время GROUP BY. UNION позволяет выполнять два отдельных запроса и объединять их результаты в один результирующий набор. – KevenDenen