मुझे आशा है कि यह उत्तर दूसरों को 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 ....
......पी>
.... ) संयुक्त रूप से t1.e =jointable.e
. परमैं जो समझता हूं उसके आधार पर:
-
Join
वास्तव मेंinner join
. के बराबर है -
.select
select
. के बराबर और है एसक्यूएल में। आपaliases
भी जोड़ सकते हैं (एसक्यूएल में) के रूप में। -
.addSelect
, in select
-
चुनिंदा क्वेरीबिल्डर का उपयोग करके आप दो प्रकार के परिणाम प्राप्त कर सकते हैं:इकाइयां या कच्चे परिणाम। यह वर्णन करने के लिए कि क्या आप डेटा को संस्थाओं के रूप में चाहते हैं (
getOne
औरgetMany
) या क्या है (getRawOne
औरgetRawMany
)।