This may make me sound like a horrible developer, but I never use INNER joins. And when I say never, I mean NEVER. I have nothing against them, it's just that I can accomplish everything I want to do with LEFT joins. In your example for joining table class_groups I'd do something like this instead:
LEFT OUTER JOIN class_groups cg ON c.id = cg.class_id
And then in my WHERE clause I'd include:
Then, once you have it rewritten using LEFT joins only, it should be trivial to convert that to the DAL select statement.
Probably not ideal, but this is what I'd do.
-Jim