mi sa che hai ragione, ho aggiunto la condizione alla riga 10 come AND del where alla riga 13.
Ora va, ma ora sono passato a qualche errore logico, perché mi restituisce 0 risultati.
la struttura delle tabelle è questa
codice:
alpha_userpoints
________________
userid | points
880 15
850 20
community_fields_values
_________________________
user_id | field_id | value
880 2 roma
880 5 16 anni
850 2 firenze
user_usergroup_map serve solo ad escludere tutti gli utenti che non hanno group_id=2.
Lo scopo della query: selezionare l'userid del punteggio più alto (alpha_userpoints) per ogni città (fields_id=2). In altre parole mi serve 1 solo userid per ogni città: quello che ha il punteggio più alto.
any help?
query allo stato attuale
codice:
SELECT pts.userid, pts.points, com.value
FROM (SELECT c.value, MAX(p.points) AS max_pts
FROM k6l0c_community_fields_values AS c
INNER JOIN k6l0c_alpha_userpoints AS p
ON p.userid = c.user_id
INNER JOIN k6l0c_user_usergroup_map AS grp
ON c.user_id = grp.user_id
WHERE grp.group_id = 2 AND c.field_id=16
GROUP BY c.field_id ) AS sub
INNER
JOIN k6l0c_community_fields_values AS com
ON com.value = sub.value
INNER
JOIN k6l0c_alpha_userpoints AS pts
ON pts.points = sub.max_pts
AND pts.userid = com.id
INNER
JOIN k6l0c_users AS usr
ON usr.id = pts.userid
WHERE com.value!='' AND
pts.points >0
ORDER BY pts.points DESC