我需要根据条件查询和排序记录。我有桌子:
TASKS (id, date_due, created_at, ...)
和TASK_DEPENDENCIES (task_id, dependency_task_id)
,多对多关系表,其中dependency task_id 和dependency_task_id 是对TASKS 表的FK。
通常我会查询任务并按date_due
. 但由于我们有任务依赖关系,我想这样订购:
- 第一个没有依存关系的任务按 date_due 排序
- 具有按 date_due 排序的依赖项的下一个任务
我现在的解决方案是我只需创建 2 个单独的查询并将其提供给表。这可以只用一个查询来完成吗?效率如何(快)?
更新:我现有的 SQL
非依赖任务
SELECT T.id, TD.dependency_task_id FROM tasks T
LEFT OUTER JOIN task_dependencies TD ON T.id = TD.task_id
WHERE assigned_user_id=1 AND TD.dependency_task_id IS null
ORDER BY T.date_due
依赖任务:
SELECT T.id, TD.dependency_task_id FROM tasks T
LEFT OUTER JOIN task_dependencies TD ON T.id = TD.task_id
WHERE assigned_user_id=1 AND TD.dependency_task_id IS NOT null
ORDER BY T.date_due