我有两张桌子,分别是预订和办公室
预订:

办公室:

请注意,我使用的是BITWISE操作的小时可用性,这是在30分钟迭代。
现在的问题是,当用户需要预订一个新的预订时,我需要从每个办公室的办公室可用性(offices.mon_hours)中减去预订的小时数(sum(bookings.hours_booked)),这样我就可以得到一个可用办公室的列表。
到目前为止,这就是我的查询,但是出现了这个错误: Subquery返回超过1行
select * from offices o
where (mon_hrs - (SELECT SUM(hours_booked)
from bookings boo
where boo.week = 44
AND boo.year = 2020
AND CAST(from_timestamp as DATE) = '2020-10-26'
GROUP BY office_id)) & 4 ;发布于 2020-10-23 17:28:40
测试
SELECT offices.*
FROM offices
JOIN (SELECT SUM(hours_booked) summ, office_id
FROM bookings
WHERE week = 44
AND year = 2020
-- next replacement avoids table scan and allows index usage
-- AND CAST(from_timestamp as DATE) = '2020-10-26'
AND from_timestamp >= '2020-10-26'
AND from_timestamp < '2020-10-26' + INTERVAL 1 DAY
GROUP BY office_id) sums ON offices.id = sums.office_id
WHERE (offices.mon_hrs - sums.summ) & 4 ;https://stackoverflow.com/questions/64497355
复制相似问题