Oracle
 sql >> база данни >  >> RDS >> Oracle

Въведете подзаявки ORM

Надявам се този отговор да помогне на други да използват подзаявка 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 =съвместим.e

Въз основа на това, което разбирам:

  • Join всъщност е равно на inner join

  • .select е и еквивалент на select в SQL. Можете също да добавите aliases (както в SQL).

  • .addSelect е подобен на , in select

  • Има два типа резултати, които можете да получите с помощта на select querybuilder:обекти или необработени резултати. За да опишете дали искате данните като обекти (getOne и getMany ) или какво itis(getRawOne и getRawMany ).




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Функция COALESCE() в Oracle

  2. Как да редактирате съхранена процедура в Oracle SQL Developer?

  3. JSON_OBJECTAGG() Функция в Oracle

  4. Как да активирате проследяване в приложения на Oracle r12

  5. oci_bind_by_name и to_date PHP/OCI/Oracle