BiorącSkutecznie m.in. Kolumna nie w grupie przez SQL Query
Tabela A
Id INTEGER
Name VARCHAR(50)
Tabela B
Id INTEGER
FkId INTEGER ; Foreign key to Table A
Chciałbym policzyć occurrances każdej wartości FkId
:
SELECT FkId, COUNT(FkId)
FROM B
GROUP BY FkId
Teraz po prostu chcę również wypisać nazwę od Table A
.
To nie zadziała:
SELECT FkId, COUNT(FkId), a.Name
FROM B b
INNER JOIN A a ON a.Id=b.FkId
GROUP BY FkId
ponieważ a.Name
nie jest zawarta w klauzuli GROUP BY
(produkuje is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause
błąd).
Chodzi o to, aby przenieść z wyjścia jak ten
FkId Count
1 42
2 25
do wyjścia tak
FkId Count Name
1 42 Ronald
2 22 John
Istnieje sporo mecze na SO dla tego komunikatu o błędzie, ale niektóre np https://stackoverflow.com/a/6456944/141172 mają komentarze typu "wygeneruje 3 skany na stole, zamiast 1, więc nie będzie skali".
Jak ja skutecznie zawierać pole z połączonych Table B
(który ma 1: 1 stosunek do FkId
) wyjścia zapytania?
Czy możesz pokazać przykładowe dane i pożądane wyniki? Mam trudności ze zrozumieniem, czy może istnieć więcej niż jedna unikalna nazwa dla FkId. –
Dla każdej FkId będzie tylko jedna unikalna nazwa. Chodzi o to, aby pokazać nazwę obok FkId, więc użytkownik patrzący na wynik nie widzi "Osoba 1 pokazała się 42 razy", ale widzi "Osoba 1, której nazwisko nazywa się Ronald, pojawiła się 42 razy". –
Dlaczego więc nie dodać po prostu nazwy do grupy? –