如果我有一个operator
表和一个user
表,并且与user
中的operator
表有多个关系,其中pm
是在relationship()
上连接的operator.pm_id == user.id
和sales
是在relationship()
上连接的operator.sales_id == user.id
,如何从内部引用username
列select语句中的user
表,类似于以下内容:
stmt = select([operator, operator.pm.username.label('pm'), operator.sales.username.label('sales')])
这显然行不通,但是我该如何完成类似的工作?
答案 0 :(得分:0)
核心思想是:
stmt = select([operator.name, user.name])
stmt = stmt.select_from(operator.join(user, operator.pm_id==user.id))
您可以通过这种方式使用select_from语句从多个表中生成列的联接。
要添加的最后一部分
operator.sales(用户表中的用户名不同)
我仍然不完全了解。但是也许您也可以使用上面的方案来解决这个问题。
编辑:
要明确这一点:您可以无限期地链接此操作,例如
stmt = stmt.select_from(table1.join(table2, table1.key==table2.key).join(table3, table2.key==table3.key))
等等。