Hallo allemaal,

Ik zit met de volgende uitdaging:

Ik heb twee tabellen, t.w. shop__componisten, twee velden (id en componist) en de tabel shop__tracks met o.a. het veld relatie_componist dat gebruikt wordt om een relatie te leggen met de andere tabel.
Nu wil ik weten hoeveel relaties er per componist zijn als ik een query start vanuit shop__componisten.


select
   c.id as id,
   c.componist as componist
   count(t.id) (........ en dan ben ik het even kwijt) as aantal
from
   shop__componisten as c
left join
   shop__tracks as t
on
   c.id = t.relatie_componist


Wie kan mij een hint geven?

George
Het enige wat je zo te zien mist nog is een GROUP BY clause. Als je namelijk een aggregate functie gebruikt dan wordt die standaard over alle geselecteerde rijen uitgevoerd en houd je dus 1 rij over. Als je de aggregate wilt splitsen over de verschillende componisten, dan geef je dat aan in de GROUP BY clause. Je dient dan alle niet aggregate kolommen in de GROUP BY op te nemen:

SELECT
   c.id,
   c.componist,
   COUNT(t.id) AS aantal
FROM
   shop__componisten AS c
LEFT JOIN
   shop__tracks AS t
ON
   c.id = t.relatie_componist
GROUP BY 
   c.id, c.componist

Nu krijg je de totalen per componist.
Erwin,

Precies wat ik zocht.

Bedankt.


TOPIC GESLOTEN

Reageren