Nog niet eerder bij de hand: Tellen van aantal relaties
George van Baasbank
17/07/2013 15:12:35Hallo 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.
Wie kan mij een hint geven?
George
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.
Code (php)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
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
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
PHP hulp
17/11/2024 17:27:26Erwin H
17/07/2013 15:59:42Het 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:
Nu krijg je de totalen per componist.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
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
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.