Я ищу запрос, такой как:
SELECT DISTINCT entity_rel.eidsub AS eidsub, entity_user_client.eidclient AS eidclient
FROM entity_user_client
LEFT OUTER JOIN entity_rel ON entity_user_client.eidclient = entity_rel.eidobj AND entity_rel.reltype = :reltype_1
LEFT OUTER JOIN entity_client ON entity_user_client.eidclient = entity_client.entityid
WHERE entity_user_client.eiduser IN (:userid_1)
со следующим кодом:
euc_query = select(
[EntityRel.c.eidsub, EntityUserClient.c.eidclient]
).distinct().select_from(
EntityUserClient
).outerjoin(
EntityRel,
(EntityUserClient.c.eidclient == EntityRel.c.eidobj) & (
EntityRel.c.reltype == 51)
).outerjoin(
EntityClient,
EntityUserClient.c.eidclient == EntityClient.c.entityid
)
if user_ids: # filter by user
euc_query = euc_query.where(EntityUserClient.c.eiduser.in_(user_ids))
но выдает ошибку:
AttributeError: у объекта 'Join' нет атрибута 'где'
Также вокруг выбора есть обернутый парантез:
(SELECT DISTINCT entity_rel.eidsub AS eidsub, entity_user_client.eidclient AS eidclient
FROM entity_user_client)
LEFT ...
которого не должно быть там, от которого я не знаю, как избавиться: (