【发布时间】:2021-03-26 11:09:31
【问题描述】:
我有 sql 查询,我正在尝试执行完全外部联接,这在 SQL 中可以正常工作,但在 Alchemy 中不起作用。
Select
Table1.field1 as Table1Field1, Table1.field2 as Table1Field2,
Table2.field1 as Table2Field1, Table2.field2 as Table2Field2,
Table3.field1 as Table3Field1, Table3.field2 as Table3Field2,
Table4.field1 as Table4Field1, Table4.field2 as Table4Field2,
Table5.field1 as Table5Field1, Table5.field2 as Table5Field2,
Table7.field1 as Table7Field1, Table7.field2 as Table7Field2
From Table1
full outer JOIN Table2 ON Table2.T1_id = Table1.id
full outer JOIN Table3 ON Table3.T1_id = Table1.id
full outer JOIN Table5 ON Table5.T1_id = Table1.id
full outer JOIN Table4 ON Table4.id = Table5.T4_id
full outer JOIN Table7 ON Table7.id = Table5.T7_id;
T1_id是Table1.id的所有表中的外键
但是我在下面尝试的查询我不断得到
Please use the .select_from() method to establish an explicit left side, as well as
providing an explcit ON clause if not present already to help resolve the ambiguity.
我尝试过的查询
session.query(Table1).join(Table2, Table3, Table4, Table5, Table7).
filter(Table2.T1_id = Table1.id, Table3.T1_id = Table1.id, Table4.T1_id =Table1.id, Table4.T5_id= Table5.id, Table4.T7_id = Table7.id).all()
我想要 sqlAlchemy 版本,我可以在其中获得 sql 查询中给出的完整外连接。
More detailed error
"help resolve the ambiguity." % (right,)
sqlalchemy.exc.InvalidRequestError: Don't know how to join to <class 'model.Table4'>. Please use the .select_from() method to establish an explicit left side, as well as providing an explcit ON clause if not present already to help resolve the ambiguity.
【问题讨论】:
-
删除选择列表末尾的逗号
-
@Serg 完成,抱歉错过了
-
你能用两张表重现这个问题吗?
-
上一条评论中引用的答案很老,所以也要注意follow-up comment。
标签: sql sqlalchemy