【发布时间】:2015-02-07 00:35:50
【问题描述】:
我想在一个键上将多个结果集加入到 1 个结果中。
有3个表(我在这里只添加相关记录):
Project table : | id | project |
File table : | id | project_id |
Approved table: | file_id | dep1_date | dep2_date | dep3_date |
部门默认为日期字符串:0000-00-00 00:00:00 第一个查询是:
SELECT project.project,
SEC_TO_TIME(AVG(TIME_TO_SEC(TIMEDIFF(approved.dep1_date,file.uploaded_datetime)))) as dep1_avg
FROM APPROVED
LEFT JOIN file on file.id = approved.file_id
LEFT JOIN project on project.id=file.project_id
WHERE approved.dep1_date != '0000-00-00 00:00:00'
GROUP BY project.project
它会给我按项目等分组的平均批准时间:
Project Dep1_avg
project1 01:03:02
project2 04:14:03
project3 00:07:56
...
我也想使用 dep2 和 dep3_date 再运行此查询 2 次,并附加到第一个结果集,但包含不同的 WHERE 状态(approved.dep2_date、approved.dep3_date)。
这样看表怎么办?
Project Dep1_avg Dep2_avg Dep3_avg
project1 01:03:02 04:23:11
project2 04:14:03 11:33:44
project3 00:07:56 00:13:43 32:24:17
...
另外 2 个结果与第一个查询相同(按项目),如果没有批准等 Dep2 或 Dep3 的一个项目,则它应该为 NULL 或空
查询是什么样的?
谢谢
【问题讨论】:
标签: mysql sql select if-statement group-by