A couple of notes if you're new to CF:
1) When you are passing variables via the URL, its always a
good idea to default them using <cfparam>. You may also want
to add some logic so that if URL.artist eq "", then you redirect
back to your list
2) Integers are much easier to pass via URL variables than
names. If you are worried about controlling which artists users
have access to you can take steps to encrypt or obfuscate the
artist ids.
3) Your queries may run a little quicker if you can define
the fields you want to retrieve from your table instead of using
"*". However, I know how much a pain it can be to go back and add
fields to your code when you change your database scheme.
4) Using <cfqueryparam> does 2 things for you: First,
it speeds up your queries (which is always good). Second, it
provides you some protection against Cross Site Scripting and SQL
injection built into the tag.
5) If you query is only returning 1 record, I believe the
current best practice is to use
<cfoutput>#qQueryName.myField#</cfoutput> instead of
<cfoutput query="qQueryName">#myField#</cfoutput>.
Since outside of a loop, #qQueryName.myField# always returns the
value of myField in the first row of the recordset.
Hope that helps!