我有几个表的数据库,其中 2 个定义为:
CREATE TABLE [projects] (
[id] INTEGER NOT NULL PRIMARY KEY,
[code] VARCHAR(128) UNIQUE NOT NULL COLLATE NOCASE,
[name] VARCHAR(128) DEFAULT "Not Set" NOT NULL COLLATE NOCASE
)
CREATE TABLE [tasks] (
[id] INTEGER NOT NULL PRIMARY KEY,
[project_id] INTEGER NOT NULL,
[notes] VARCHAR(512) DEFAULT 'Not Set' NOT NULL COLLATE NOCASE,
[start] DATE NOT NULL,
[finish] DATE NOT NULL,
[rate_id] INTEGER DEFAULT 1 NOT NULL
)
我有这个查询,它返回带有使用次数的项目详细信息列表:
SELECT p.*, count(t.project_id) as length
FROM projects as p, tasks as t
WHERE p.id=t.project_id
GROUP BY p.code
ORDER BY length DESC;
但正如我发现的那样,如果不使用项目 ID(没有给定项目 ID 的任务),它将返回小于项目的列表。
有没有办法以与我当前查询相同的格式创建完整的项目列表并添加长度但包括所有项目并且对于那些没有任务长度的项目将有 0?