You have implicit joins. If you only select partial records (which is likely), than what is happening is that for each of the properties that are unique within any of the tables provided it will provide an entire record with only that data changed. Problem is you don't see what that data is since its not selected.
Simply add a DISTINCT to the query selection and it should resolve that.
header('HTTP/1.1 420 Enhance Your Calm');