我尝试在Postgres上执行一个连接4个表的查询。
表名:
- scenarios_scenario - payments_invoice - payments_payment - payments_action
(所有这些奇怪的名称都是由Django生成的 -)))
关系:
- scenarios_scenario [有很多] payments_actions - payments_action [有一个] payments_invoice - payments_action [有一个] payments_payment
下面是一个有效的查询:
表名:
- scenarios_scenario - payments_invoice - payments_payment - payments_action
(所有这些奇怪的名称都是由Django生成的 -)))
关系:
- scenarios_scenario [有很多] payments_actions - payments_action [有一个] payments_invoice - payments_action [有一个] payments_payment
下面是一个有效的查询:
SELECT payments_invoice.*,
(payments_payment.to_be_paid - payments_payment.paid) as remaining, \
payments_action.identificator
FROM payments_invoice
JOIN payments_payment
ON payments_invoice.action_id = payments_payment.action_id
AND payments_payment.full_payment=2
JOIN payments_action
ON payments_invoice.action_id = payments_action.id
AND payments_action.identificator = %s
我只想从另一个表中检索相关字段,并编写了另一个查询,例如:
SELECT
scenarios_scenario.title, payments_invoice.*, \
(payments_payment.to_be_paid - payments_payment.paid) as remaining, \
payments_action.identificator, payments_action.scenario_id
FROM payments_invoice
JOIN scenarios_scenario
ON scenarios_scenario.id = payments_action.scenario_id
JOIN payments_payment
ON payments_invoice.action_id = payments_payment.action_id
AND payments_payment.full_payment=2
JOIN payments_action
ON payments_invoice.action_id = payments_action.id
AND payments_action.identificator = 'EEE45667';
但是面对这个错误 -
ERROR: missing FROM-clause entry for table "payments_action"
LINE 2: ...IN scenarios_scenario ON scenarios_scenario.id = payments_a...
^
我在 Stack Overflow 上搜寻了类似这个问题的帖子(missing FROM-clause entry for table),但是没有找到解决方法。非常感谢任何帮助。
JOIN
放在底部了吗?你试图在加入payments_action
之前加入scenarios_scenario
。 - Dmitry