【问题标题】:MySQL - Subquery Returns more than 1 row - subtraction issueMySQL - 子查询返回超过 1 行 - 减法问题
【发布时间】:2020-10-23 09:22:43
【问题描述】:

所以我有 2 张桌子,分别是预订和办公室

预订:

办公室:

请注意,我使用 BITWISE 操作来计算 30 分钟迭代的小时数。

现在的问题是,当用户需要预订新的预订时,我需要从每个办公室的办公室可用性 (offices.mon_hours) 中减去预订小时数 (sum(bookings.hours_booked)),以便我可以得到一个列表可用的办公室。

这是我目前的查询,但出现了这个错误:子查询返回超过 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 ;

【问题讨论】:

    标签: mysql bitwise-operators


    【解决方案1】:

    测试

    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 ;
    

    【讨论】:

    • OFFICE_ID 是我认为使用(office_ID)的未知列,将其更改为“id”但仍然无法正常工作。更改为 id 时仍然未知列
    • @SigmondGatt 已更改。 PS。您将提供您的表结构作为他们的 CREATE TABLE,而不是图片。
    • 你能把'ON office.id'编辑成'ON office.id'吗,非常感谢!
    • @SigmondGatt 一个错字。已编辑。
    • 抱歉再次打扰 :(,我发现此查询存在问题,因为当有其他办公室可用但不在预订表中时(表中没有预订),将没有出现在结果中,我尝试对办公室进行左连接,但什么也没发生
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多