' NOT BETWEEN'不能在codeigniter中工作

时间:2016-03-16 13:27:23

标签: mysql codeigniter

这是我的查询

SELECT 
tbl_rooms . *, tbl_property . *, tbl_bookings.booking_Id
FROM tbl_rooms
JOIN tbl_bookings ON tbl_rooms.room_id = tbl_bookings.room_id
JOIN tbl_property ON tbl_rooms.property_id = tbl_property.property_id
where
(tbl_bookings.From_date NOT BETWEEN CAST('2016-03-02' AS DATE) AND CAST('2016-03-06' AS DATE)
 AND tbl_bookings.To_date NOT BETWEEN CAST('2016-03-02' AS DATE) AND CAST('2016-03-06' AS DATE) 
 AND tbl_bookings.From_date > CAST('2016-03-06' AS DATE) 
 AND tbl_bookings.To_date > CAST('2016-03-06' AS DATE) AND tbl_property.Ref_Property_Type_Property_Type_Id = 1)

当我尝试在 codeigniter 中实现此查询时 我发现BETWEEN给出了结果,但不是BETWEEN没有给出任何结果, 需要帮助...

编辑-codeigniter实现

    $where="tbl_bookings.From_date NOT BETWEEN CAST('2016-03-02' AS DATE) AND CAST('2016-03-06' AS DATE)
    AND tbl_bookings.To_date NOT BETWEEN CAST('2016-03-02' AS DATE) AND CAST('2016-03-06' AS DATE) 
    AND tbl_bookings.From_date > CAST('2016-03-06' AS DATE)
    AND tbl_bookings.To_date > CAST('2016-03-06' AS DATE)";     
    $this->db->select('tbl_rooms.*,tbl_property.*,tbl_bookings.booking_Id');
    $this->db->from('tbl_rooms');
    $this->db->join('tbl_bookings','tbl_rooms.room_id = tbl_bookings.room_id' );
    $this->db->join('tbl_property','tbl_rooms.property_id = tbl_property.property_id' );
    $this->db->where($where);
    $this->db->where('tbl_property.Ref_Property_Type_Property_Type_Id',1);
    $query=$this->db->get();

1 个答案:

答案 0 :(得分:0)

实际上,这两个NOT BETWEEN AND没用,与以下两个条件重叠。

该查询与以下内容等效:

SELECT 
tbl_rooms . *, tbl_property . *, tbl_bookings.booking_Id
FROM tbl_rooms
JOIN tbl_bookings ON tbl_rooms.room_id = tbl_bookings.room_id
JOIN tbl_property ON tbl_rooms.property_id = tbl_property.property_id
where
    tbl_bookings.From_date > CAST('2016-03-06' AS DATE) AND 
    tbl_bookings.To_date > CAST('2016-03-06' AS DATE) AND 
    tbl_property.Ref_Property_Type_Property_Type_Id = 1;

对于你得到的空集,它可能会被连接条件过滤掉。

您可以通过删除整个where子句来验证这一点。如果是这种情况,则需要相应地进行调整。