sql >> データベース >  >> RDS >> Oracle

TypeORMサブクエリ

    この回答が、他の人が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()+')'を使用していました サブクエリを取得するには、

    と同等のクエリを選択します。

    (SELECT f、t4.g、t5.e、t6.h ....

    ......

    ....)ジョイント可能ONt1.e=ジョイント可能.e

    私が理解していることに基づく:

    • 参加 実際には内部結合と同じです

    • .select selectと同等です SQLで。 エイリアスを追加することもできます (SQLのように)。

    • .addSelect selectのに似ています

    • select querybuilderを使用して取得できる結果には、エンティティまたは生の結果の2種類があります。データをエンティティとして必要かどうかを説明する( getOne およびgetMany )またはwhat itis( getRawOne およびgetRawMany




    1. Neo4j-Cypherを使用してCSVファイルからデータをインポートする

    2. pandasDataFrameをMicrosoftSQLServerテーブルにアップサートする方法は?

    3. エラー:Postgresを使用したシーケンスcitys_id_seqの権限が拒否されました

    4. サブクエリを使用せずに最大シーケンスの行のみを選択する方法は?