私は Pyramid アプリケーションで SQLAlchemy を使用しており、次のテーブルのペアがあります。
from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base()
class User(Base):
__tablename__ = 'users'
id = Column(Integer, primary_key=True)
name = Column(String, nullable=False, default='', unique=True)
manager = Column(Integer, nullable=False, default=-1)
class MyStats(Base):
__tablename__ = 'my_stats'
id = Column(Integer, primary_key=True)
agent = Column(Integer, ForeignKey("users.id"), nullable=False, index=True)
manager = Column(Integer, ForeignKey("users.id"), nullable=False, index=True)
kpi_one = Column(Integer)
kpi_two = Column(Integer)
MyStats はその時点でのエージェントのマネージャーを保存します (そのため、マネージャーが誰であるかに基づいて、または好きなようにマネージャーとは別に、エージェントのパフォーマンスがどのように変化したかを確認できます)。
以下を取得するクエリを実行したいと思います。
Agent Manager KPI1 KPI2
Bob Fred 1 1.1
Alice Owain 1.2 0.9
などなど。これで、エージェント名またはマネージャー名だけでプルアップできます。
DBSession.query(User.name, MyStats.kpi_one, MyStats.kpi_two).filter(User.id == MyStats.agent)
私ができないのは、両方を同時に照会することです。私は一日の大部分をこれを解決しようとして過ごしましたが、できません。