我希望这个答案可以帮助其他人使用TypeORM子查询。
const subquery = await getManager() .createQueryBuilder(table4, 't4') .select('"t4".f') .addSelect('"t4".g') .addSelect('"t5".e') .addSelect('"t6".h') .innerJoin(table5, 't5', '"t4".g = "t5".g') .innerJoin(table6, 't6', '"t6".g = "t4".g') .where('"t4".k = 4 AND ("t6".i = 2 OR ("t6".i = 1 AND "t6".j = 1))'); model = await getManager() .createQueryBuilder(table1, 't1') .select('"t1".a') .addSelect("TO_CHAr (MAX (jointable.f), 'MON YYYY')", 'f') .addSelect('"t3".c') .addSelect('"t3".d') .addSelect('"t1".e') .leftJoin('table2', 't2', '"t2".e = "t1".e') .innerJoin(table3, 't3', '"t3".d = "t2".d') .innerJoin('('+subquery.getQuery()+')', 'jointable', '"t1".e = jointable.e') .where('jointable.h = :h AND (:d = 3 OR "t3".d = :d)', { h: h, d: d }) .groupBy('"t1".a, "t3".c, "t3".d, "t1".e') .orderBy('"t1".a', 'ASC') .getRawMany();我
'('+subquery.getQuery()+')'用来获取子查询的选择查询等效于(选择f,t4.g,t5.e,t6.h…。
......
....)可连接ON t1.e =可连接
根据我的理解:
Join
实际上 等于inner join
.select``select
在SQL中等于和。您也可以添加aliases
(如SQL中一样)。.addSelect
类似于, in select
使用选择查询构建器可以得到两种类型的结果:实体或原始结果。描述您是否要将数据作为实体(
getOne
和getMany
)或作为实体(getRawOne
和getRawMany
)。



