2012-11-01 61 views
1

我有一個數據庫有兩個表:tripsdaysdays中的每個條目都有一個與trips中的條目對應的ID。SQL返回結果如果where子句不匹配任何東西

我想運行一個查詢,該查詢將返回發生在提供日期的行程,如果在該日期沒有發生行程,則返回該日期之後的下一行程。這是我當前的查詢(daystring在代碼生成,假設它是一個有效的SQL日期字符串):

SELECT _id, number, date 
FROM trips 
INNER JOIN days ON trips._id = days.trips_id 
WHERE days.date > DATE(daystring, "start of day", "-1 day") 
    AND days.date < DATE(daystring, "start of day", "+1 day"); 

該查詢,如果在規定日期存在的行程雖然只返回一個結果。我該如何修改它才能在該日期之後返回下一次旅程,除非該日期沒有一次旅行?

回答

3
SELECT _id, number, date FROM trips INNER JOIN days ON trips._id = days.trips_id 
WHERE days.date > DATE(daystring, "start of day", "-1 day") 
order by date Limit 1; 

是一個快速修復。如果你還沒有一個索引,可能需要在日期欄中有一個索引。

+0

太棒了,謝謝。 – Ralgha

相關問題