Tatsächlich hilft mir "GROUP BY a.id".
Warum und wie genau ist mir aber noch nicht ganz klar.
Du willst ja den Datensatz aus der Tabelle a nur einmal.
Was macht aber die Query, wenn du folgendes Ergebniss hast
(nehmen wir mal an, das es eine logische Verknüpfung zwischen a.id und b.id in deiner Abfrage gibt) ?
a.id | b.id
-----+-----
1 | 1
1 | 2
1 | 3
1 | 4
1 | 5
1 | null
Letztlich kriegst du den Datensatz von a.id sechsmal, obwohl du ihn nur einmal haben möchtest.
In deinem Fall denke ich mal klappt das, weil du eine 1:1-Transition hast, daß heißt es kommen die Datensätze immer nur einmal vor.