[PHP/MySQL] Tellen in meerdere tables tegelijk

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
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:

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?

Acties:
  • 0 Henk 'm!

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

hij telt het aantal rijen ;)
haal die COUNT()'s maar eens uit je select en zie wat eruit komt :)

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Erkens schreef op donderdag 14 april 2005 @ 15:08:
[...]

hij telt het aantal rijen ;)
Dat is ook de bedoeling. Ik wil tot 3 keer toe rijen tellen waarin die user voorkomt. Eigenlijk doe ik 3 keer een COUNT op WHERE user=u.id

Acties:
  • 0 Henk 'm!

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

Volgens mij moet je dan ook gewoon 3 query's uitvoeren.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Erkens schreef op donderdag 14 april 2005 @ 15:16:
Volgens mij moet je dan ook gewoon 3 query's uitvoeren.
Nou, liever niet. Als ik 1000 users heb krijg ik 4000 3001 queries, om 1 lijstje op te bouwen!

Zoiets moet toch in 1 query kunnen?

[ Voor 4% gewijzigd door Verwijderd op 14-04-2005 15:23 ]


Acties:
  • 0 Henk 'm!

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

niet met count iig ;)
althans niet dat ik weet met MySQL.

(overigens valt de zwaarte van de query natuurlijk wel mee, gewoon een simpele count op een index)

edit:
ehm, dat zijn toch gewoon 3 query's? je grouped toch op username ;)

[ Voor 68% gewijzigd door Erkens op 14-04-2005 15:23 ]

Pagina: 1