【发布时间】:2022-06-15 00:26:03
【问题描述】:
我目前在针对我正在开发的一个小型项目管理 CMS 进行 MySQL 查询时遇到问题。我有两张桌子;项目和项目信息。项目表定义了主键、创建日期(时间戳)、projectType 和 creatorId(最初创建项目的经理)。
projectInfo表包含一个主键,projectId(链接到projects表的主键),userId(修改项目的用户),updatedTimestamp,projectName & projectDescription。
关键是经理可以创建一个项目,从 projectName 和 projectDescription 开始,然后其他用户可以自己更改 projectName 和 projectDescription,留下谁创建项目的日志,以及谁已经在每一步编辑项目。
所以有很多 projectInfo 记录指向同一个项目,而最近的 projectInfo 记录是该项目的最新迭代。我想要一个列出项目表中所有记录的查询,但还包含最新的单数 updatedTimestamp、projectName、projectDescription 和 userId。
项目
| id | timestamp | projectType | creatorId |
| -- | ------------------- | ----------- | ------ |
| 1 | 2022-05-11 11:17:22 | Design | 1 |
| 2 | 2022-05-12 11:17:22 | Production | 2 |
项目信息
| id | projectId | userId | updatedTimestamp | projectName | projectDescription |
| -- | --------- | ------ | ------------------- | ----------- | ------------------ |
| 1 | 1 | 1 | 2022-05-11 11:17:22 | McNuggets | Makes chicken nuggets |
| 2 | 1 | 2 | 2022-05-12 11:17:22 | McNuggets | Makes chicken nuggets and burgers|
| 3 | 2 | 1 | 2022-05-13 11:17:22 | An unrelated Project | Idk yet |
我修改了一个查询。但是,缺少某些数据,例如 creatorId 和时间戳。我只得到以下字段; id、projectId、userId、updatedTimestamp、projectName 和 projectDescription。
SELECT p.*
FROM projects AS a
JOIN projectInfo AS p
ON p.id =
( SELECT pi.id
FROM projectInfo AS pi
WHERE pi.projectId = a.id
ORDER BY pi.updatedTimestamp DESC
LIMIT 1
) ;
任何帮助将不胜感激。
谢谢,瑞恩。
【问题讨论】: