2011-12-15 1 views
0
ownself = db.session.query(User.id.label("user_1_id"), User.id.label("user_id")) 

User2 = aliased(User) 
FacebookUser2 = aliased(FacebookUser) 
friends = (db.session.query(User2.id.label("user_1_id"), User.id.label("user_id")). 
      join(FacebookUser2, User2.facebook_info == FacebookUser2.id). 
      join(FriendConnection, FacebookUser2.id == FriendConnection.fb_user_from). 
      join(FacebookUser, FacebookUser.id == FriendConnection.fb_user_to). 
      join(User, User.facebook_info == FacebookUser.id) 
      ) 

u_all = union_all(ownself, friends) 

q = (db.session.query(User).filter(u_all.c.user_id == user.id)) 

"모든 파생 테이블에 MySQL의 고유 한 별칭이 있어야합니다."라는 오류 메시지가 나타납니다. 어떻게 해결할 수 있습니까?SQLAlchemy 오류 : "파생 테이블마다 고유 한 별칭이 있어야합니다."

답변

1

나는 your other question에있는 주석이 이제 이것을 다뤄야한다고 생각합니다. 문제의 (부분) 쿼리에 .alias("alias_name")을 추가하면됩니다.
코드 예제에서 두 하위 쿼리 모두에 추가하십시오 :

# old: 
u_all = union_all(ownself, friends) 
# new: 
u_all = union_all(ownself.alias("subquery1"), friends.alias("subquery2")) 
관련 문제