0

我对这个 SQL 查询彻底崩溃了,我希望有人能对我应该做的事情有所启发。

我有以下表格,它们由“anumber”链接;

athletes
--------
anumber     (id)
acountry    ('Australia','Japan')
aname

result_placing
--------------
result_id       id
anumber         (id linked to athletes)
result_placing  (Gold, Silver or null)

我想获得与多少金、银结果相关的国家列表。所以输出如下:

country     | resul_placing | result_count
----------- | ------------- | ------------
Australia   | Gold          |       2
Australia   | Silver        |       1

我试过这样的事情:

SELECT      acountry 
FROM        athletes 
INNER JOIN  result_placing 
ON          athletes.anumber = result_placing.anumber

这表明

 Australia | Gold   |
 Australia | Silver |

只是不确定如何获得每个的计数。我试过 count(distinct) 但 Access 不喜欢它。

一旦我在其中使用 Count ,就像:

SELECT      a.acountry
        ,   r.placing
        ,   count(a.acountry) 
FROM        athlete         a 
INNER JOIN  result_place    r 
ON          a.anumber       = r.anumber

我收到:

You tried to execute a query that does not include the specified expression 'acountry' as part of an aggregate function

4

3 回答 3

2

尝试

SELECT      a.acountry
        ,   r.result_placing
        ,   sum(*) as cnt 
FROM        athletes        a 
RIGHT JOIN  result_placing  r 
ON          a.anumber       = r.anumber 
GROUP BY    a.acountry
        ,   r.result_placing 
ORDER BY    a.acountry
于 2012-05-03T02:20:11.540 回答
1

没有试过这个,但这里有。您需要使用分组依据。请尝试以下查询

SELECT a.acountry, r.result_placing, count(a.acountry) FROM athletes a INNER JOIN     result_placing r ON a.anumber = r.anumber group by a.acountry, r.result_placing
于 2012-05-03T02:17:16.670 回答
1

这是使用LEFT OUTER JOINGROUP BY查询数据的一种方法。

Script

SELECT              a.acountry
                ,   IIf(r.result_placing = '' 
                        OR IsNull(r.result_placing), 
                        'n/a', 
                        r.result_placing
                    ) AS medal
                ,   COUNT(r.result_id) AS medalcount
FROM                athletes a
LEFT OUTER JOIN     result_placing r
ON                  a.anumber = r.anumber
GROUP BY            a.acountry
                ,   r.result_placing

Table Data

运动员表数据

运动员

results_placing表数据

results_placements

Output

查询输出

询问

于 2012-05-03T02:37:20.407 回答