2009-11-16 88 views
1

我想提取包含當天日期的日期的記錄。sql查詢中的多個條件

我有這個疑問

$query = "select * from calendar_items WHERE expiredate LIKE '$todays_date %' 
    or upcoming_event_featured_date like '$todays_date %' 
    ORDER BY expiredate ASC"; 

現在我有3個upcoming_event_featured_date的:upcoming_event_featured_date2,upcoming_event_featured_date3,upcoming_event_featured_date4

所以我想運行一個查詢,將搶,有一個日期那樣的結果即將來臨的事件日期(coming_event_featured_date,coming_event_featured_date2,coming_event_featured_date3,coming_event_featured_date4)。

查詢看起來像這樣嗎?

$query = "select * from calendar_items 
    WHERE expiredate LIKE '$todays_date %' or 
    (upcoming_event_featured_date like '$todays_date %' or 
    upcoming_event_featured_date2 like '$todays_date %' or 
    upcoming_event_featured_date3 like '$todays_date %' or 
    upcoming_event_featured_date4 like '$todays_date %') 
    ORDER BY expiredate ASC"; 
+2

試試看!你有沒有設置phpMyAdmin?這是一個很好的界面來測試這樣的事情並查看結果。 – 2009-11-16 19:44:41

+10

您需要的是對規範化結構進行重新設計。你不應該不斷添加這樣的字段。任何時候你都有用數字標記的字段,你需要一個相關的表。 – HLGEM 2009-11-16 19:45:25

+0

這是我幾年前編寫的一箇舊應用程序,無法在其上花費太多時間。 – Brad 2009-11-16 19:51:10

回答

1

你一定要聽HLGEM並規範表結構。但是對於你所要求的,假設$ todays_date是一個實際的日期(比如2009-11-16),那麼這個查詢很可能會起作用。您可能需要將接近的百分比移動得更安全一點:

$query = "select * from calendar_items 
WHERE expiredate LIKE '{$todays_date}%' or 
(upcoming_event_featured_date like '{$todays_date}%' or 
upcoming_event_featured_date2 like '{$todays_date}%' or 
upcoming_event_featured_date3 like '{$todays_date}%' or 
upcoming_event_featured_date4 like '{$todays_date}%') 
ORDER BY expiredate ASC";