mysql查第二个_在MySQL中组合“no results”第二个查询和第一个查询

这可能很简单,但我想知道编写这个查询的“最佳”或“标准”方式。

我有两张桌子。一种是具有任务名称、开始时间戳和结束时间戳的工作计划。此表由计划管理器提前填充。

UserId | task | startTime | endTime

joe | dishes | 2010-05-15 10:00 | 2010-05-15 14:00

joe | papers | 2010-05-15 14:00 | 2010-05-15 15:00

joe | trash | 2010-05-16 09:00 | 2010-05-16 10:00

joe |cooking | 2010-05-16 11:30 | 2010-05-16 13:30

第二个表是一个包含每天工作分钟数和日期戳的工作日志。此表由员工填充。

UserId | date | timeLogged

joe | 2010-05-15 | 300

joe | 2010-05-16 | 180

workLog

我想要的是一个一次完成两个任务的查询。问题是它应该只在“first”为null的情况下执行“second”查询,因此执行任何联接或如果nulls对我来说是不正确的,因为当

工作日志

以表为准。例如,如果用户在星期二和星期三生病,但是记录了星期一和星期四的小时数,我不希望结果使用星期一和星期四的记录时间以及星期二和星期三的预定时间。但是,如果他那周每天都生病,那么可以用调度表数据填充表单,因为用户不会(或者至少不应该)提交表单。

我可以想出一两种方法,主要使用第三个聚合查询和

UNION

声明,但这似乎有些草率。

更新

SELECT date, timeLogged

FROM workLog

WHERE userID = '$userid'

AND date BETWEEN $startDate AND $endDate

如果没有返回结果:

SELECT DATE(startTime) AS date,

SUM(TIME_TO_SEC(TIMEDIFF(startTime,endTime)))/60 AS timeLogged

FROM schedule

WHERE userID = '$userid'

AND date BETWEEN $startDate AND $endDate

GROUP BY DATE(startTime)

因此,两个查询之后的任何函数都不需要知道结果来自哪个表。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值