There are a few reasons for including given fields in a query.
You use a SELECT clause to name the fields you wish to actually show together, i.e. data to be extracted and delivered.
You use an ON clause (part of a JOIN) to name the fields that define some relationship between the participating tables.
You use a WHERE clause or HAVING clause to name fields for which you wish some selectivity to be imposed, i.e. selective inclusion or exclusion.
You use GROUP BY or ORDER BY clause to identify factors in the presentation of what you are showing when a sort or aggregation is involved.
In each case, the fields can appear in the query's clauses INDEPENDENT of whether they appear in the other clauses, with a couple of exceptions when a GROUP BY clause is involved because fields may be required in other parts of the query to support the grouping.