#sql #ms-access #ms-access-2013
#sql #ms-access #ms-access-2013
Вопрос:
У меня есть две таблицы в MS Access. Одна для планет и одна для типа звезды, вокруг которой она вращается.
Я хочу получить количество планет на звезду type…so что-то вроде:
---------- --------------------
| 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
для всех типов звезд, на самом деле это вообще не считается.
Что я мог делать неправильно?
Комментарии:
1.
PlanetName
не должно быть вGROUP BY
Ответ №1:
Путем группировки по starType
и PlanetName
, счетчик возвращает количество записей в каждой комбинации starType
amp; 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
агрегатная функция вернет количество записей, связанных с каждой StarType
:
select t.StarType, count(t.PlanetName) as Planets
from YourTable t
group by t.StarType
----------- ---------
| StarType | Planets |
----------- ---------
| G2V | 3 |
| Red Dwarf | 2 |
----------- ---------