Stel ik heb 4 tables. Eén table 'user' waarin ik m'n gebruikers opsla, en drie tables met gegevens die gekoppeld zijn aan gebruikers (elk heeft dus een veld 'user' wat overeenkomt met het veld 'id' in de user-table).
Nu wil ik een lijst genereren van alle gebruikers, met achter hun naam het aantal keer dat ze voorkomen in elk van de overige 3 tables. Ik meende dat te doen als volgt:
Stel ik heb een user Wriker die 1 keer voorkomt in t1, 2 keer in t2 en 1 keer in t3, dan krijg ik niet het verwachte resultaat van
Wriker: 1-2-1
maar ik krijg
Wriker: 2-2-2
Hij pakt dus voor elke count de hoogste waarde van alledrie.
Wat doe ik fout?
Nu wil ik een lijst genereren van alle gebruikers, met achter hun naam het aantal keer dat ze voorkomen in elk van de overige 3 tables. Ik meende dat te doen als volgt:
code:
1
2
3
4
5
6
| SELECT u.naam, COUNT(t1.id), COUNT(t2.id), COUNT(t3.id) FROM users AS u LEFT JOIN t1 ON t1.user=u.id LEFT JOIN t2 ON t2.user=u.id LEFT JOIN t3 ON t3.user=u.id GROUP BY u.id |
Stel ik heb een user Wriker die 1 keer voorkomt in t1, 2 keer in t2 en 1 keer in t3, dan krijg ik niet het verwachte resultaat van
Wriker: 1-2-1
maar ik krijg
Wriker: 2-2-2
Hij pakt dus voor elke count de hoogste waarde van alledrie.
Wat doe ik fout?