【问题标题】:Get records from the same table mysql从同一张表mysql中获取记录
【发布时间】:2017-04-29 03:50:24
【问题描述】:

提前致谢。

我必须验证用户是否在特定时间可用。我正在尝试通过将原始记录(具有我们要与活动记录的日期和时间进行比较的值的记录)与表的其余部分进行比较来对同一个表进行双重查询,所以想要分配时间表的用户必须验证它没有同时或在某个时间范围内(例如前后 45 分钟)分配到另一个服务中。

我无法解决问题,我想知道您是否可以帮助我解决这个问题。这是我到目前为止的查询,但它没有返回任何结果:

SELECT b2.*, b.* FROM bookingdetails b, bookingdetails b2
WHERE b.pickup_date = b2.pickup_date
AND b.pickup_time = b2.pickup_time
AND b2.driver_id = 109
AND b.id = 2449
AND b2.id <> 2449
AND b2.pickup_time BETWEEN b.pickup_time - INTERVAL 45 MINUTE AND b.pickup_time + INTERVAL 45 MINUTE

【问题讨论】:

    标签: mysql


    【解决方案1】:

    我认为你在正确的轨道上,但你有两个竞争条件:

    b.pickup_time = b2.pickup_time
    

    b2.pickup_time BETWEEN b.pickup_time - INTERVAL 45 MINUTE AND b.pickup_time + INTERVAL 45 MINUTE
    

    摆脱第一个,我认为它可能对你有用。

    另外,值得注意的是,您使用的是过时的 JOIN 语法。而是:

    SELECT b2.*,
        b.*
    FROM bookingdetails b
        INNER JOIN bookingdetails b2 ON 
            b.pickup_date = b2.pickup_date      
            AND b2.pickup_time BETWEEN b.pickup_time - INTERVAL 45 MINUTE
                AND b.pickup_time + INTERVAL 45 MINUTE
    WHERE b2.driver_id = 109
        AND b.id = 2449
        AND b2.id <> 2449
    

    【讨论】:

    • Houuu 非常感谢@JNevill。我很感激。我把你的答案,它的工作。再次非常感谢您。
    猜你喜欢
    • 2021-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多