how to do a conditional subquery with db_delete
I think your current way is that fine for multiple table handle like that. From this Delete from Multiple Tables using db_delete link you can see that:

db_delete takes a single string parameter to define which table the query is to be run against. There's no scope to provide more than one table at a time.