Tengo 3 tablas: CardTypeOne , Card , TransactionMoney . CardTypeOne tiene una foreign key a la tabla de card (relación OneToOne ). la tabla de card tiene 2 claves externas para TransactionMoney Table (relaciones OneToMany ) como se muestra a continuación:
Tabla CardTypeOne :
@OneToOne(type => Card) @JoinColumn() card: Card;La mesa de cartas es:
@OneToMany( () => TransactionMoney, transactionMoney => transactionMoney.fromCard, ) outterTransaction: TransactionMoney[]; @OneToMany( () => TransactionMoney, transactionMoney => transactionMoney.toCard, ) innerTransaction: TransactionMoney[];Tabla TransacciónMoney:
@Column('integer') amount: number; @ManyToOne( () => Card, card => card.withdraws, ) outterTransaction: Card; @ManyToOne( () => Card, card => card.deposit, ) innerTransaction: Card;La tabla TransactionMoney tiene un campo de cantidad. Quiero calcular la función de suma en la transacción externa en el campo de cantidad y hacer lo mismo para la transacción interna. Finalmente me gustaría restar estos sumatorios. aquí está mi código de prueba:
await getConnection() .getRepository(CardTypeOne) .createQueryBuilder('typeOne') .leftJoinAndSelect('typeOne.card', 'card') .leftJoin('card.outterTransaction','outter') .leftJoin('card.innerTransaction','inner') .addSelect('sum (outter.amount) as balance1') .addSelect('sum (inner.amount) as balance2') .where('typeOne.id= :id', { id: id}) .getOne();Pero cuando ejecuto el código me sale este error:
column "typeOne.id" must appear in the GROUP BY clause or be used in an aggregate function