SQLAlchemy从子查询联接表.如何防止它这样做



我有这个子查询:

aliasBilling = aliased(Billing)
subQueryReversesBilling = db.session.query(BillingReversal).select_from(BillingReversal).with_entities(BillingReversal.reverses_billing_id).filter(BillingReversal.billing_id == aliasBilling.id).subquery()

生成:

SELECT billing_reversal.reverses_billing_id
FROM billing_reversal, billing AS billing_1
WHERE billing_reversal.billing_id = billing_1.id

如何去掉我没有指定的连接(逗号样式(,因为它为整个表和每个记录创建了一个连接。显然,它假设我在过滤部分(where子句(中需要它,但我从稍后的较大查询中获取了该表。这就是为什么它是一个子查询。我需要的是:

SELECT billing_reversal.reverses_billing_id
FROM billing_reversal
WHERE billing_reversal.billing_id = billing_1.id

交叉联接来自filter子句中的别名Billing表。

如果BillingReversalBilling与一个关系(和一个外键(链接,则应该利用此关系和join,而不是filter

subQueryReversesBilling = (
db.session.query(BillingReversal)
.join(Billing, BillingReversal.billing)
.with_entities(BillingReversal.id)
.subquery()
)

相关内容

最新更新