【问题标题】:How to express Postgresql CROSS JOIN LATERAL in Typeorm如何在 Typeorm 中表达 Postgresql CROSS JOIN LATERAL
【发布时间】:2021-01-20 23:43:54
【问题描述】:

我使用 Typeorm 作为我的 ORM,但我不知道如何在 Typeorm 中表达横向连接

我有 2 个表:WorkingTime m-1 Worker

WorkingTime 实体:

  • dayOfWeek: Int
  • 句点:jsonb
  • worker:与 Worker 表的(多对一)关系

下面是句点json结构:

[{
  start: "10:00:00",
  end: "13:00:00
}, {
  start: "15:00:00",
  end: "21:00:00"
}]

我想获取所有工作时间包含具有start < 12:00:00 的句点的工人

我使用横向交叉连接

SELECT DISTINCT "worker".id
FROM "worker" "worker"
LEFT JOIN "working_time" "workingTimes" 
ON "workingTimes"."workerId"="worker"."id" 
CROSS JOIN LATERAL
     jsonb_array_elements("workingTimes"."periods")AS attr
WHERE attr ->> 'start' < '12:00:00'

但我不知道如何使用 Typeorm (NestJS) 表达查询

【问题讨论】:

    标签: postgresql nestjs typeorm


    【解决方案1】:

    你没有提到,但我猜你正在使用查询生成器!

    没有诚实的方法可以做到这一点,但是...我发现了一个 hack

          queryBuilder.leftJoin("(SELECT 1)", "dummy", "TRUE CROSS JOIN LATERAL jsonb_array_elements("workingTimes"."periods") attr ON TRUE");
    

    我没有用您的数据对其进行测试,但希望您了解总体思路

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-28
      • 2021-06-30
      • 2015-05-18
      • 2021-03-04
      • 2015-04-17
      • 1970-01-01
      相关资源
      最近更新 更多