Why aren't m.tiles and m.score returned please?How about you output g.mid1 and g.mid2 in the first query and confirm that the rows being returned from words_games actually have a value in the set {2,3,4} in one of those columns.
Also, NULL can be annoying here...might want to try IS DISTINCT FROM or some similar.
Dave