对不起,如果之前已经回答过;我有点不确定如何最好地描述这个问题,不要介意搜索它。但是这里......
基本上我有一个'项目'表,其中包含'id'和'title'。我还有一个'projects_history'表,当(IF)项目被设置为archived(一个布尔值)时,它保存信息。它有一个引用项目的“pid”键 - 每个项目在更新时可以有多个记录(为了跟踪谁将值设置为什么)。
还有一个'project_enquiries'表,其中包含有关为项目提出的查询的信息,因此有一个'pid'键引用了'项目'。类似地,有一个'project_enquiry_history'表,记录查询何时(IF)设置为关闭(布尔值)。它有一个引用project_enquiry的'eid'键 - 每次查询更新时都可以有多个记录(为了跟踪谁将值设置为什么)。
我的查询旨在提取尚未归档的项目(因此要么'project_history'中没有记录,要么项目的最新记录'已归档'= 0),这些记录仍然存在open(所以要么'project_enquiry_history'中没有记录,要么最近的查询记录'open'= 1)。
我真的在努力从哪里开始查询。
答案 0 :(得分:0)
首先,如果project_history
中没有记录,那么您需要使用left join
表格projects
表project_history
project_history
项目ID来发现这个。结果中的条目在SELECT * from project p LEFT OUTER JOIN project_history ph ON P.ID=ph.pid
LEFT OUTER JOIN project_enquiry_history peh ON peh.ID=ph.pid
WHERE (archived is NULL OR archived=0)
AND (open is NULL OR open=1)
的列中为空,其中没有相应的条目。然后,您可以链接该流程,使用结果在'project_enquiry_history'上执行另一个左连接,以查找没有条目的项目。
您也可以正常使用这些结果来选择数据。
它看起来像:
{{1}}
如果你正在使用时间戳等,你可能需要调整它以找到最新的。