Es algo que puedes encontrar en cualquier manual básico de SQL, sea de MySQL u otro DBMS cualquiera. La cláusula HAVING es un estándar, y el método es mas o menos universal.
Te agrego dos consejos, que se han repetido muchas veces en los foros de BBDD:
1) No uses nombres como "id", para los campos ed identificación, ponle un prefijo o sufijo que haga mucho más simple escribir las consultas, y facilita alas optimizaciones, evitando conflictos de campos ambiguos.
2) Nunca uses el WHERE para realizar la relación de los campos del JOIN. Usa el ON en el FROM. Es mucho más eficiente, menos proclive a generar errores de interpretación y por sobre todo, es optimizable por el parser, mientras que el WHERE no.
MySQL espera que en un INNER JOIN la relación se declare en el FROM, no en el WHERE.