2013-08-28 37 views
2

我想選擇必須有兩個或多個條目但在表中應該有今天和明天約會的記錄。我以日期格式將日期保存在表格中。應該有今天和明天約會的Mysql select記錄

SELECT `availibility`.* 
FROM (`availibility`) 
WHERE `property_id`= 8818 
AND (availibility.unavailibility_date between CURDATE() 
AND DATE_ADD(CURDATE(),INTERVAL 1 DAY)) 

我使用上面的查詢,但這樣會真實的,即使一個日期(今天或明天)存在。我想應該有兩個日期 例如

+---------+----------------+------------+ 
| ID | property_id | Date  | 
+---------+----------------+------------+ 
| 369516 | 8818   | 2013-01-19 | 
| 369517 | 8818   | 2013-01-18 | 
| 369518 | 8818   | 2013-01-17 | 
| 418021 | 8818   | 2013-08-27 | 
| 418022 | 8818   | 2013-08-28 | 
| 418022 | 8818   | 2013-08-29 | 
| 418022 | 2001   | 2013-07-29 | 
| 418022 | 2001   |2013-07-30 | 
+---------+----------------+------------+ 

8818屬性應該進來的記錄集,因爲這兩個日期這裏存在

+1

請提供一些示例數據和所需的輸出 – Eggplant

回答

3
SELECT property_id 
FROM yourtable 
WHERE date IN (CURDATE(), CURDATE() + INTERVAL 1 DAY) 
GROUP BY property_id 
HAVING COUNT(DISTINCT date)=2 

請參閱小提琴here

+0

當多個記錄存在相同的property_id和Date時,這不會給出有效的結果。因此,請確保您的表每個property_id /日期只有一條記錄 –

+0

是有一個記錄的財產與一個日期 – Farhan

+0

我在其中添加where property_id in(多個ID)查詢之前,但它只返回一個記錄,因爲有具有真實記錄集的多個屬性 – Farhan

1

這樣的記錄可以使用:

NOW() + INTERVAL 1 DAY 

如果您只對日期有興趣,而不是日期和時間,那麼你可以使用CURDATE而不是NOW:

CURDATE() + INTERVAL 1 DAY 

您的查詢應該是

SELECT `availibility`.* 
FROM (`availibility`) 
WHERE `property_id`= 8818 
AND (availibility.unavailibility_date between CURDATE() 
AND CURDATE() + INTERVAL 1 DAY // change here 
+0

你會寫完整查詢。我無法理解你想說什麼。 – Farhan

+0

現在查看我的答案..試試吧 –

0

如果我已經明白這個好...

SELECT `property_id`, count(*) as no 
FROM (`availibility`) 
WHERE `property_id`= 8818 
AND (availibility.unavailibility_date=CURDATE() 
OR availibility.unavailibility_date=DATE_ADD(CURDATE(),INTERVAL 1 DAY)) 
having no =2 
1

使用連接,以確保第二記錄存在:

SELECT `availibility`.* 
FROM `availibility` 
JOIN `availibility` AS availibility_tomorrow ON availibility_tomorrow.property_id =  availibility.property_id AND availibility_tomorrow.unavailibility_date = DATE_ADD(CURDATE (),INTERVAL 1 DAY)) 
WHERE `property_id`= 8818 AND availibility.unavailibility_date = CURDATE()