タイトルで説明する方法がよくわかりませんでしたが、これが私が直面していることです。
私が書く必要があるのは、比較的単純なクエリだと思っていたものです(とにかくSQLで):
SELECT
tasks.*,
resource_contact.*,
client_contact.*
FROM
tasks,
TaskResReln,
contact resource_contact,
TaskContact
contact client_contact,
WHERE
tasks.task_id = TaskResReln.task_id
AND TaskResReln.contact_code = resource_contact.contact_code
AND tasks.task_id = TaskContact.task_id
AND TaskContact.contact_code = client_contact.contact_code
私の目にはあまり質問はありません。非常に簡単です...ただし、これをSQL Alchemyクエリに変換すると、
tasks = db.session.query(Tasks,client_contact,resource_contact)\
.join(TaskResReln, resource_contact)\
.reset_joinpoint()\
.join(TaskContact, client_contact)
ここでの私の考えは(そしてマニュアルを理解しようとすることから)でした。「Tasks」は query() の最初のモデルであるため、リセットポイントにする必要がありますか? そこで、まずリソース側に参加し、参加をリセットしてから、クライアント側に参加すると思いました...違います。
次の SQL が生成されます。
FROM
tasks JOIN task_res_reln ON tasks.task_id = task_res_reln.task_id
JOIN contact AS contact_2 ON contact_2.contact_code = task_res_reln.contact_code
JOIN task_contact ON contact_2.contact_code = task_contact.contact_code
JOIN contact AS contact_1 ON contact_1.contact_code = task_contact.contact_code
ご覧のように; 最初の部分は、task_contact に到達するまで泳いでいます...その後、すべてがそこから南に進みます。
どうすればクエリを達成できますか? 正しい方向への指針をいただければ幸いです。