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 })
