【发布时间】:2014-10-22 15:12:58
【问题描述】:
假设我有以下 SQL 代码,我想将其更改为 Sqlalchemy:
SELECT amount FROM table1
JOIN table2
ON table2.id = table1.b_id
JOIN (SELECT id FROM table3 WHERE val1 = %s AND val2 = %s) inst
ON inst.id = table1.i_id
WHERE
val3 = %s
我尝试为 SELECT id FROM table3 子句创建子查询,如下所示:
subq = session.query(table3.id).filter(and_(table3.val1 == 'value', table3.val2 == 'value')).subquery()
然后把所有东西放在一起:
query = session.query(table1).join(table2).filter(table2.id == table1.b_id).\
join(subq).filter(table1.val3 == 'value')
当我输出 query.first().amount 时,这适用于一些示例,但对于某些查询,当那里应该有什么东西时我没有得到任何结果,所以我一定是在某个地方搞砸了。有什么想法我哪里出错了吗?谢谢
【问题讨论】:
-
返回的SQL语句是什么样的?你能给出它什么时候起作用和不起作用的例子吗?
标签: python sql join sqlalchemy subquery