【问题标题】:sql query - to rent a car (php)sql 查询 - 租车 (php)
【发布时间】:2017-12-09 14:38:13
【问题描述】:

我是 php 和 sql 新手,无法编写查询。

我已经完成了一个显示/获取未租汽车的查询。 它看起来像这样:

SELECT c.*
FROM cars c
WHERE NOT EXISTS (
          SELECT * 
          FROM reservations as r
          WHERE r.car_id = c.id AND
          (r.res_from <= '2017-12-08 02:53:59' AND r.res_to >= '2017-12.09 23:58:59') OR
          (r.res_from <= '2017-12-08 23:59:59' AND r.res_to >= '2017-12.09 23:58:59') OR
          (r.res_from >= '2017-12-08 23:59:59' AND r.res_to <= '2017-12.09 23:58:59')
          );`

问题是:如何编写查询给定 from_date - to_date 的租车查询,并且用户/客户需要足够的积分(金钱)来租用指定的汽车。

link to my database http://sqlfiddle.com/#!9/170f7f4/5

我尝试过这样的事情。这是正确的方法吗?

    SELECT * FROM cars as c, reservations as r, users as u,
    WHERE HAVING c.id = r.car_id AND
                 r.user_id = u.user_id AND
          (res_from <= '2017-12-08 02:53:59' AND r.res_to >= '2017-12-08 02:53:59') OR
          (r.res_from >= '2017-12-08 23:59:59' AND r.res_to <= '2017-12-08 23:59:59' )

....接下来呢?

想要点击一辆车(如附图所示)然后选择租车日期。

【问题讨论】:

    标签: php mysql


    【解决方案1】:

    使用连接

    SELECT * FROM cars as c
    LEFT JOIN reservations as r ON c.id = r.car_id
    LEFT JOIN users as u ON r.user_id = u.user_id
    WHERE ...
    etc.
    

    【讨论】:

      【解决方案2】:

      SELECT c.* FROM cars AS c LEFT JOIN (SELECT r. * FROM reservations AS r WHERE r.res_from >= '2017-12-09 23:58:59' AND r.res_to <= '2017-12-18 23:58:59' )
      AS r ON c.id = r.car_id WHERE r.car_id is null;

      我认为这个可能有用。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多