PostgreSQL implementerer FULD YDRE JOIN
med enten en hash eller en flette-join.
For at være berettiget til en sådan deltagelse skal deltagelsesbetingelsen have formularen
Nu gør din deltagelsesbetingelse se sådan ud, men PostgreSQL har ikke en speciel IS NOT DISTINCT FROM
operator, så den analyserer din tilstand til:
(IKKE ($1 er forskellig fra $2))
Og sådan et udtryk kan ikke bruges til hash eller merge joins, deraf fejlmeddelelsen.
Jeg kan komme i tanke om en måde at omgå det på:
SELECT a_id, NULLIF(a_value, ''), b_id, NULLIF(b_value, '')FROM (SELECT id AS a_id, COALESCE(value, '') AS a_value FROM a ) x FULD JOIN (SELECT id AS b_id, COALESCE(value, '') AS b_value FROM b ) y ON x.a_value =y.b_value;
Det virker hvis
vises ikke nogen steder i værdien
kolonner.