私は次のクラスを持っています:
Class User(Base):
#user properties
Class Item(Base):
#item properties
Class User_Item(Base):
__tablename__='users_items'
id=Column(Integer, primary_key=True)
user_id=Column(Integer, ForeignKey('users.id'))
item_id=Column(Integer, ForeignKey('items.id'))
info=Column(String(20))
user=relationship(User,backref='items',primaryjoin=(User.id==user_id))
item=relationship(Item, backref='users',primaryjoin=(Item.id==item_id))
次の2つのクエリの違いは何ですか:
result1= session.query(Item).options(joinedload(Item.users)).filter(Item.users.any(user=user1)
また
result2=session.query(Item).join(Item.users).filter(Item.users.any(user=user1))
どういうわけか、2番目のものは奇妙に見えます! user1 が 2 つのアイテムを持っているとしましょう。running はresult1.count()
予想どおり 2 を返しますが、result2.count()
3 を返します! ながら、len(result2.all())
2です!何が起こっているのか、誰か教えてもらえますか?! :D