PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

La query SQLAlchemy mostra un errore Impossibile unire la tabella/i "flussi di lavoro" selezionabili a se stessa

Parte

.query(Workflow.user_id, func.count(Log.id))

aggiunge entrambi Workflow e Log alla tua domanda. Il primo modello è contrassegnato come tabella primaria e gli altri sono contrassegnati come secondari. Se non ci sono chiamate a .join() successivamente, le tabelle primarie e secondarie verranno aggiunte al FROM clausola. Se ci sono chiamate a .join() sposterà la tabella che riceve nel JOIN clausola. La cosa importante qui è che .join() può essere applicato solo alla tabella secondaria.

Il problema è che la tua chiamata a

.join(Workflow, Workflow.id == Log.workflow_id)

tenta di contrassegnare la tabella primaria come unita. Per risolvere il problema devi unirti al tavolo secondario:

.join(Log, Workflow.id == Log.workflow_id)

Puoi aggiungere echo=True per vedere SQL generato da SQLAlchemy. È davvero conveniente eseguire il debug delle tue query. Oppure puoi compilare singola query per vedere l'SQL generato.