【发布时间】:2017-01-25 05:58:02
【问题描述】:
我有一张这样的桌子
表allotment
allotment_id | date | room_id | is_closed
-----------------------------------------
1 | 2017-01-28 | 21 | 0
2 | 2017-01-29 | 21 | 1
3 | 2017-01-30 | 21 | 0
4 | 2017-01-31 | 21 | 0
5 | 2017-01-28 | 32 | 0
6 | 2017-01-29 | 32 | 0
7 | 2017-01-30 | 32 | 0
8 | 2017-01-31 | 32 | 0
我正在尝试这样的查询:
SELECT *
FROM allotment
WHERE date BETWEEN '2017-01-28' AND DATE_SUB('2017-01-31', INTERVAL 1 DAY)
AND is_closed = 0
AND date >= '2017-01-28' AND l.`date` <= DATE_SUB('2017-01-31', INTERVAL 1 DAY) AND allotment_id NOT IN (select allotment_id FROM allotment WHERE is_closed = 1 AND date >= '2017-01-28' AND date <= '2017-01-31')
如您所见,我选择日期为 2017-01-28 到 2017-01-31,桌子上有两个房间 ID,room_id 21 日期为 2017-01-29 is_closed 为 1。
我想要的只是返回 room_id 32,因为在 room_id 21 中,我选择的日期范围是 is_closed 中的值 1。 p>
我已经尝试过我的查询,但它不起作用。我怎么能这样做。
谢谢。
【问题讨论】:
-
您在哪里和子查询中使用了 allotment_id。而不是这个,你必须使用 room id
-
在这里向我们展示您的预期输出可能会有所帮助。
-
你试过我的答案了吗?
-
@krishnpatel 先生,它有效。谢谢。
-
@Antonio 你能回答一下吗?
标签: php mysql codeigniter codeigniter-3