opcion 1) puedes correr dos estatutos si tienes el ID
 
opcion 2) Si no esta borrando por ID y requieres que se mantenga la integridad
puedes utilizar un Trigger de delete sobre la tabla categorias, que funcione asi:  Cuando borres algo de esta tabla que tambien borre en automático de la otra tabla subcategorias. 
aqui el script.    
Código PHP:
Ver originaldrop trigger if exists categoria_trigger_delete;
 
delimiter $$
CREATE TRIGGER categoria_trigger_delete
AFTER delete ON categoria
BEGIN
delete from subcategoria where id_categoria=old.id;
delimiter ;
  
Espero te ayude en algo. 
La opcion INNER JOIN a la que haces mención la verdad es que no la he utilizado.  siento que el trigger te puede ayudar.