全部,我有以下代码:
$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);
我正在使用完整的日历,并试图确定有多少活动具有相同的开始日期。例如,如果我有以下日期:
2012年6月2日
2012年6月2日
2012年1月3日
2012年5月4日
在我的数据库中有条目的日期,我基本上想看看那个日期有多少事件,基本上说还有多少点。因此,对于任何给定的日期,我都可以安排两次活动,因此2012年6月2日我希望它返回"已预订",2012年1月3日我希望"还剩一个名额"等。
我该怎么做这样的事?
谢谢!
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)
您已接近目标,但您希望使用COUNT(*)
返回组中的条目数。(记住给列一个别名,以便您可以检索它。)您还应该限制自己只检索start
列,因为检索不在GROUP BY子句中的列是非标准的。
你快完了,因为其他人把我打得落花流水。你可以试试这样的东西。重要的部分是简单地进行计数。
$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);