使用JOIN和COUNT语句访问SQL查询,但不计算任何内容
我在MS Access中有两个表。一个是行星,另一个是它围绕的恒星类型 我想得到每种恒星类型的行星数量……比如:使用JOIN和COUNT语句访问SQL查询,但不计算任何内容,sql,ms-access,ms-access-2013,Sql,Ms Access,Ms Access 2013,我在MS Access中有两个表。一个是行星,另一个是它围绕的恒星类型 我想得到每种恒星类型的行星数量……比如: +----------+--------------------+ |星型|平面星型| +----------+--------------------+ |A | 4| |B | 1| |C | 7| +----------+--------------------+ 所以我写了这个SQL查询: SELECT StarType, COUNT(PlanetName) AS Plan
+----------+--------------------+
|星型|平面星型|
+----------+--------------------+
|A | 4|
|B | 1|
|C | 7|
+----------+--------------------+
所以我写了这个SQL查询:
SELECT StarType, COUNT(PlanetName) AS PlanetsPerStarType
FROM Planets AS p
LEFT JOIN StarClass AS s ON p.sid = s.sid
GROUP BY starType, PlanetName
但它只是列出了所有的行星,而对于所有的恒星类型,它根本不算什么
我可能做错了什么?通过按
星型和行星名分组,计数将返回每个星型&行星名组合中的记录数,除非有多个同名行星围绕你的恒星运行,否则它们将始终是一个
例如,给定数据:
+-----------+------------------+
|星型|飞机名称|
+-----------+------------------+
|G2V |火星|
|G2V |接地|
|G2V |金星|
|红矮星| Omicron Persei 8|
|红矮星|佛冈6号|
+-----------+------------------+
按StarType
和PlanetName
分组将产生完全相同的数据,因为没有重复的StarType
和PlanetName
组合将合并为一个组
因此,SQL代码:
选择t.StarType,将(t.PlanetName)计算为行星
从你的桌子上
按t.StarType、t.PlanetName分组
将产生:
+-----------+---------+
|星型行星|
+-----------+---------+
|G2V | 1|
|G2V | 1|
|G2V | 1|
|红矮星| 1|
|红矮星| 1|
+-----------+---------+
因为每组都有一条记录
相反,如果我们仅按StarType
分组,则Count
聚合函数将返回与每个StarType
关联的记录数:
选择t.StarType,将(t.PlanetName)计算为行星
从你的桌子上
按t.星型分组
+-----------+---------+
|星型行星|
+-----------+---------+
|G2V | 3|
|红矮星| 2|
+-----------+---------+
PlanetName
不应在组中