不太知道如何在标题中解释它,但这就是我所面临的。
我需要写,我认为是一个相对直接的查询(无论如何在 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)
我的想法是(并试图理解手册)。那是因为“任务”是 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... 然后一切都从那里向南走。
我将如何实现我的查询?任何正确方向的指针将不胜感激。