... 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! 
