我很难弄清楚这个加入。我有两个相关的表:
Reservations
id | data
----+------------
1 | something
CalendarEvents
id | relates_to | time
----+-------------------------------------------------------------------------------
1 | {"type:": "", "relations": [{"#type": "", "relatesToId": "1"}]} | "2022-02-02"
我想选择 Reservations 和所有通过 id 匹配它们的 CalendarEvents,像这样(简化)
SELECT r, ce FROM reservations r
LEFT JOIN calendar_events ce ON r.id = ce.relates_to.relations.relatesToId
WHERE ce.time > '2022-01-01';
relates_to
在jsonb中
您需要首先使用
jsonb_array_elements
. 您可以使用 a 来执行此操作CROSS JOIN LATERAL
,您可以将其放在 内JOIN
,允许您将其用作连接条件的一部分db<>小提琴
注意使用
->
to retrievejsonb
和->>
to retrievetext
。您还需要将文本转换为int