... estando en PHP sería indicado hablaran en este lenguaje (las variables con $ e indicar su asignación, al menos su forma)... así a simple vista parece puro SQL.
... pero bueno, medio entendiendo, primero podrías hacer un simple cambio en el órden de la query y posteriormente condicinar la parte en la que influyen las variables:
Código PHP:
$query= "SELECT *
FROM obras,artistas
WHERE obras.identificador = artistas.identificador"; // parte fija
if(isset($var1)) $query.= " AND`genero` = '$vargenero'"; // si existe se le añade
if(isset($var2)) $query.= " AND `sub_genero` = '$varsubgenero'"; // idem
$query.= " ORDER BY nombre ASC"; // y se finaliza
En general... espero haber entendido y haberme dadio a entender
.
www.php.net/isset www.php.net/language.operators.assignment
Suerte!