2011-08-05 20 views
0

我正在絞盡腦汁想知道這可能如何工作。我嘗試了一些變化,似乎無法獲得準確的結果。項目NEW,7 +天,14 +天按年齡/日期查詢選擇行數

我需要檢查我的cdate字段,它包含日期和時間戳。然後,我需要檢查少於7天的新項目並顯示行數,然後在7到14天之間的項目中顯示行數,最後顯示14天以上的項目並顯示行數。

什麼,我已經是一個儀表板,顯示了那些數計數(NEW/7+天/ 14+天)

這是我的表中的字段:

cdate 
2011-07-29 19:21:29 
2011-08-05 19:25:14 
2011-08-05 19:25:23 
2011-03-29 19:21:29 
2011-08-05 19:25:23 
2011-08-05 19:25:23 

這是我現在的查詢:

$quotesNEW_sql = mysql_query("SELECT * FROM projects WHERE status=0 AND cdate >= NOW() AND cdate <= NOW() + INTERVAL 6 DAY") or die(mysql_error()); 
$quotes_result_new = mysql_num_rows($quotesNEW_sql); 

$quotesSEVEN_sql = mysql_query("SELECT * FROM projects WHERE status=0 AND cdate >= NOW() AND cdate <= NOW() + INTERVAL 7 DAY") or die(mysql_error()); 
$quotes_result_seven = mysql_num_rows($quotesSEVEN_sql); 

$quotesFOURTEEN_sql = mysql_query("SELECT * FROM projects WHERE status=0 AND cdate >= NOW() AND cdate <= NOW() + INTERVAL 15 DAY") or die(mysql_error()); 
$quotes_result_fourteen = mysql_num_rows($quotesFOURTEEN_sql); 

感謝提前:) 約翰

回答

0

如果所有你需要的是計數,你可以使用GROUP BY做一個單一的查詢。

SELECT COUNT(crate), FLOOR(ABS(DATEDIFF(cdate, NOW())/7)) AS day_interval 
FROM projects 
WHERE status = 0 
GROUP BY day_interval; 

day_interval被細分如下:

  • 0 =新
  • 1 = 7-13天
  • 2 = 14+天
+0

我怎麼寫day_interval部分? 0 =新1 = 7-13 2 = 14 + – jonnypixel

+0

btw謝謝你這樣一個乾淨的查詢 – jonnypixel

+0

嗨賈森,即時通訊仍然不理解它。我有三個div,每一個都回應結果數。我似乎無法得到它的工作 – jonnypixel