同等のSQLAlchemyコードで機能するSQLSelectステートメントを取得するのに1日苦労していました。2つのテーブルが含まれます。
タグテーブル
class Tags(Base):
__tablename__ = 't_tags'
uid = Column(Integer, primary_key=True)
category = Column(Enum('service', 'event', 'attribute', name='enum_tag_category'))
name = Column(String(32))
そして、それらを元の親にマップするテーブル
class R_Incident_Tags(Base):
__tablename__ ='r_incident_tags'
incident_uid = Column(String(48), ForeignKey('t_incident.uid'), primary_key=True)
tag_uid = Column(Integer, ForeignKey('t_tags.uid'), primary_key=True)
tag = relationship("Tags", backref="r_incident_tags")
Incident_uidは、親を識別するための一意の文字列です。
SQLAlchemyで表現するのに苦労しているSELECTは次のとおりです
SELECT DISTINCT s.name, e.name, count(e.name)
FROM "t_tags" AS s,
"t_tags" AS e,
"r_incident_tags" AS sr,
"r_incident_tags" AS er
WHERE s.category='service' AND
e.category='event' AND
e.uid = er.tag_uid AND
s.uid = sr.tag_uid AND
er.incident_uid = sr.incident_uid
GROUP BY s.name, e.name
一日の努力の後で何かがうまくいくようになることすら近づいていないので、どんな援助もいただければ幸いです。
よろしくお願いします!