Учитывая
Таблица А
Id INTEGER
Name VARCHAR(50)
Таблица Б
Id INTEGER
FkId INTEGER ; Foreign key to Table A
Я хочу подсчитать количество вхождений каждого FkId
значения:
SELECT FkId, COUNT(FkId)
FROM B
GROUP BY FkId
Теперь я просто хочу также вывести имя из Table A
.
Это не сработает:
SELECT FkId, COUNT(FkId), a.Name
FROM B b
INNER JOIN A a ON a.Id=b.FkId
GROUP BY FkId
поскольку a.Name
не содержится в пункте GROUP BY
, (приводит к ошибке is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause
).
Суть в том, чтобы перейти от вывода вот так
FkId Count
1 42
2 25
выводить вот так
FkId Count Name
1 42 Ronald
2 22 John
В SO есть довольно много совпадений для этого сообщения об ошибке, но некоторые, например.https://stackoverflow.com/a/6456944/141172есть комментарии типа "сгенерирует 3 скана таблицы, а не 1, поэтому не будет масштабироваться".
Как я могу эффективно включить поле из объединенногоTable B
(отношение 1 :1 кFkId
)в выводе запроса?