Chi ti ha risposto finora ha le idee molto più confuse di te, non farci caso.
La tua query in teoria è semplicissima:
SELECT u.*, count(*) as numerovoti from utenti u left join voti v on u.utente_id = v.utente_id where u.categoria = x group by u.utente_id
Non è sql standard ma con mysql non dà problemi.
Come vedi nella query non compare la tabella categorie, perché non ti serve, a meno che tu non voglia estrarre anche il nome della categoria o qualche altro dato che la descrive, e non ce l'abbia già da qualche altra parte. In questo caso diventerebbe così
SELECT u.*, c.*, count(*)as numerovoti from utenti u left join categorie c on u.categoria = c.categoria left join voti v on u.utente_id = v.utente_id where u.categoria = x group by u.utente_id
Ovviamente i nomi delle tabelle e dei campi li ho inventati![]()