2012-02-06 36 views
0

所有, 存在我有以下代碼:確定有多少條目在特定日期

$fetch = mysql_query("SELECT * FROM calendar_events where event_status='booked' and event_type='wedding' GROUP BY start"); 
while ($row = mysql_fetch_array($fetch, MYSQL_ASSOC)) { 
    $row_array['id'] = $row['id']; 
    $row_array['title'] = $row['title']; 
    $row_array['start'] = $row['start']; 
    $row_array['end'] = $row['end']; 
    array_push($return_arr,$row_array); 
} 
echo json_encode($return_arr); 

我使用的fullcalendar,並試圖確定有多少事件具有相同的開始日期。因此,舉例來說,如果我有以下日期:

02/06/2012
02/06/2012
03/01/2012
04/05/2012

在具有中的條目日期我的數據庫,我想基本上看到有多少事件是在那天,基本上說,剩下多少個點。因此,對於任何給定的日期,我可以有兩個預定的活動,以便2012年6月2日我希望它返回「預訂」,並且對於03/01/2012我想要「剩下1個點」等。

我該如何去做這樣的事情?

謝謝!

回答

1
SELECT 
start, count(*) as used, 2-count(*) as free 
FROM calendar_events 
WHERE event_status='booked' 
    and event_type='wedding' 
GROUP BY start 

或由您的評論:

SELECT 
date(start) as eventdate, count(*) as used, 2-count(*) as free 
FROM calendar_events 
WHERE event_status='booked' 
    and event_type='wedding' 
GROUP BY date(start) 
+0

謝謝,這很好,但我只有一個問題。我的數據存儲爲DATETIME,因此該條目也有一個時間戳,導致它不認爲在同一天有兩個。任何想法如何解釋? – user1048676 2012-02-06 23:29:17

+0

@ user1048676編輯了我的答案 – 2012-02-06 23:31:23

0

就快,但是你想使用COUNT(*)返回該組中的條目數。 (請記住給該列一個別名,以便您可以檢索它。)您還應該限制自己僅檢索start列,因爲檢索不在GROUP BY子句中的列是非標準的。

0

你快完成了,因爲其他人打敗了我。你可以嘗試這樣的事情。重要的部分就是簡單地提到計數。

$fetch = mysql_query("SELECT id,title,start,end,count(*) as filled FROM calendar_events where event_status='booked' and event_type='wedding' GROUP BY start"); 
while ($row = mysql_fetch_array($fetch, MYSQL_ASSOC)) { 
    $row_array['id'] = $row['id']; 
    $row_array['title'] = $row['title']; 
    $row_array['start'] = $row['start']; 
    $row_array['end'] = $row['end']; 
    $row_array['filled'] = $row['filled']; 
    $row_array['booked'] = ($row['filled'] >= 2) ? true : false; 

    array_push($return_arr,$row_array); 
} 
echo json_encode($return_arr);