SELECT users.name, users.uid, count(*) as nodes FROM users_roles, users, node_revisions WHERE users_roles.rid IN (3,4,5) AND users_roles.uid=users.uid AND node_revisions.uid=users.uid GROUP BY users.uid; SELECT users.name, users.uid, count(*) as comments FROM users_roles, users, comments WHERE users_roles.rid IN (3,4,5) AND users_roles.uid=users.uid AND comments.uid=users.uid GROUP BY users.uid; This is pretty close.. the only bug is that it won't show someone with 0 comments or 0 nodes: SELECT users.name, users.uid, node_table.nodes, comment_table.comments FROM users_roles, users, ( SELECT users.uid, count(*) as nodes FROM users_roles, users, node_revisions WHERE users_roles.rid IN (3,4,5) AND users_roles.uid=users.uid AND node_revisions.uid=users.uid GROUP BY users.uid ) as node_table, ( SELECT users.uid, count(*) as comments FROM users_roles, users, comments WHERE users_roles.rid IN (3,4,5) AND users_roles.uid=users.uid AND comments.uid=users.uid GROUP BY users.uid ) as comment_table WHERE users_roles.rid IN (3,4,5) AND users.uid=comment_table.uid AND users.uid=node_table.uid GROUP BY users.name;