as I see, a LEFT OUTER JOIN is used in this case. the query itself gives back 3 rows, so it’s good. the problem is somewhere else. as I see, only the primary key of the target table is selected, and that’s where a distinct effect can come into the picture.
somewhere inside a function that deals with the objects, there must be an unwanted (in this case) array_unique function I guess.