sql >> Database >  >> RDS >> PostgreSQL

Postgresql verliet outer join op json-array

Om uw vraag te beantwoorden:Ja, het is mogelijk en uw vraag doet precies dat. We kunnen het bewijzen door een derde rij in foo te introduceren tabel:http://sqlfiddle.com/#!15/06dfe/2

Uw probleem ligt niet bij LEFT JOIN naar json_array_elements maar met impliciete laterale kruisverbinding. Uw zoekopdracht is gelijk aan:

SELECT *
FROM foo 
  CROSS JOIN LATERAL json_array_elements (foo.bars :: json) foo_bars 
  LEFT OUTER JOIN bar ON (foo_bars ->> 'id') :: BIGINT = bar.ID;

http://sqlfiddle.com/#!15/06dfe/5

Wat je wilt is een laterale linker join tussen foo en json_array_elements :

SELECT *
FROM foo LEFT JOIN LATERAL
    json_array_elements (foo.bars :: json) foo_bars ON true
LEFT OUTER JOIN bar ON (foo_bars ->> 'id') :: BIGINT = bar.ID;

http://sqlfiddle.com/#!15/06dfe/6




  1. Van het tijdstempel in SQL, records selecteren van vandaag, gisteren, deze week, deze maand en tussen twee datums php mysql

  2. Resultaten van PHP-query splitsen in kolommen

  3. Hoe voeg ik een post_id in een mysql-database in?

  4. ORDER BY behouden in SELECT INTO