Nog niet eerder bij de hand: Tellen van aantal relaties

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

George van Baasbank

George van Baasbank

17/07/2013 15:12:35
Quote Anchor link
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.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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


Wie kan mij een hint geven?

George
 
PHP hulp

PHP hulp

17/11/2024 17:27:26
 
Erwin H

Erwin H

17/07/2013 15:59:42
Quote Anchor link
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:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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

Nu krijg je de totalen per componist.
 
George van Baasbank

George van Baasbank

17/07/2013 16:11:39
Quote Anchor link
Erwin,

Precies wat ik zocht.

Bedankt.


TOPIC GESLOTEN
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.