mysql - Hvordan spørring id ikke i betingelse med en annen tabell typeorm


Her er forespørselen

SELECT * from tableA WHERE tableA.id NOT IN (SELECT tableB.a_id FROM tableB);

Samme forespørsel, hvordan skrive ved bruk av TypeORM TypeScript? Nedenfor er koden jeg prøvde, som ikke fungerer

this.createQueryBuilder('tableA')
.where(`tableA.id != :id`, { id })

Svar #1

const tableBqry = tableBRepository
       .createQueryBuilder('tableB')
       .select("tableb_id");

const tableAqry = tableARepository
       .createQueryBuilder('tableA')
       .where("tableA.id NOT IN (" + tableBqry.getSql() + ")");

const results = await tableAqry.getMany();

Denne metoden vil fungere fint for det ovennevnte problemet.

Svar #2

Du kan først velge ID-er fra tableB, og deretter bruke ID-ene du har fått (jeg antar at de er kartlagt og lagret i var ids: string[]) for å lage en forespørsel for tableA.

this.createQueryBuilder('tableA')
  .where(`tableA.id <> ALL(:ids)`, { ids })

Relaterte artikler