使用 JOIN 访问 SQL 查询和不计算任何内容的 COUNT 语句
Access SQL query with JOIN and a COUNT statement not counting anything
我在 MS Access 中有两个表。一种用于行星,另一种用于其围绕的恒星类型。
我想计算每种恒星类型的行星数量...所以类似于:
+----------+--------------------+
| StarType | PlanetsPerStarType |
+----------+--------------------+
| 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
但它只是列出了所有行星和所有恒星类型的 1
,根本不算数。
我可能做错了什么?
通过 starType
和 PlanetName
分组,计数为 return 每个 [=15] 中的记录数=] & PlanetName
组合,除非你有不止一颗同名行星围绕你的恒星运行,否则它们将永远是一个。
例如,给定数据:
+-----------+------------------+
| StarType | PlanetName |
+-----------+------------------+
| G2V | Mars |
| G2V | Earth |
| G2V | Venus |
| Red Dwarf | Omicron Persei 8 |
| Red Dwarf | Vergon 6 |
+-----------+------------------+
按 StarType
和 PlanetName
分组将产生完全相同的数据,因为没有重复的 StarType
和 PlanetName
将合并为一个组的组合。
因此,SQL 代码:
select t.StarType, count(t.PlanetName) as Planets
from YourTable t
group by t.StarType, t.PlanetName
会产生:
+-----------+---------+
| StarType | Planets |
+-----------+---------+
| G2V | 1 |
| G2V | 1 |
| G2V | 1 |
| Red Dwarf | 1 |
| Red Dwarf | 1 |
+-----------+---------+
因为每个组恰好包含一个条记录。
如果我们仅按 StarType
分组,Count
聚合函数将 return 与每个 StarType
:[=26= 关联的记录数]
select t.StarType, count(t.PlanetName) as Planets
from YourTable t
group by t.StarType
+-----------+---------+
| StarType | Planets |
+-----------+---------+
| G2V | 3 |
| Red Dwarf | 2 |
+-----------+---------+
我在 MS Access 中有两个表。一种用于行星,另一种用于其围绕的恒星类型。
我想计算每种恒星类型的行星数量...所以类似于:
+----------+--------------------+
| StarType | PlanetsPerStarType |
+----------+--------------------+
| 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
但它只是列出了所有行星和所有恒星类型的 1
,根本不算数。
我可能做错了什么?
通过 starType
和 PlanetName
分组,计数为 return 每个 [=15] 中的记录数=] & PlanetName
组合,除非你有不止一颗同名行星围绕你的恒星运行,否则它们将永远是一个。
例如,给定数据:
+-----------+------------------+
| StarType | PlanetName |
+-----------+------------------+
| G2V | Mars |
| G2V | Earth |
| G2V | Venus |
| Red Dwarf | Omicron Persei 8 |
| Red Dwarf | Vergon 6 |
+-----------+------------------+
按 StarType
和 PlanetName
分组将产生完全相同的数据,因为没有重复的 StarType
和 PlanetName
将合并为一个组的组合。
因此,SQL 代码:
select t.StarType, count(t.PlanetName) as Planets
from YourTable t
group by t.StarType, t.PlanetName
会产生:
+-----------+---------+
| StarType | Planets |
+-----------+---------+
| G2V | 1 |
| G2V | 1 |
| G2V | 1 |
| Red Dwarf | 1 |
| Red Dwarf | 1 |
+-----------+---------+
因为每个组恰好包含一个条记录。
如果我们仅按 StarType
分组,Count
聚合函数将 return 与每个 StarType
:[=26= 关联的记录数]
select t.StarType, count(t.PlanetName) as Planets
from YourTable t
group by t.StarType
+-----------+---------+
| StarType | Planets |
+-----------+---------+
| G2V | 3 |
| Red Dwarf | 2 |
+-----------+---------+