毎日のイベントのリストがあるこのカレンダーがあり、このクエリを使用して特定の日付のイベントをカウントします。私のデータベースには、ユーザーが具体的な資料のスケジュールを持っているフィールドがありますstart_time
。end_time
その日のイベントを試してみましselect
たが、クエリに問題があるようです。ユーザーは複数の資料を借りることができるため、同じものstart_time
と同様にデータベースに保存されend_time
ます。私が望むのは、同じユーザーのすべてのデータをカウントすることです。start_time
試してみGROUP BY
ましたが、うまくいかないようです。ここに私のデータベースがあります:
----Table: schedule----
id | materialID | borrowerID | date_reserve | start_time | end_time|
-----------------------------------------------------------------------------------
9 | 7 | bobi | 2013-08-16 | 07:01:12 | 07:01:12|
10 | 10 | bobi | 2013-08-16 | 07:01:12 | 07:01:12|
11 | 12 | bobi | 2013-08-16 | 07:01:12 | 07:01:12|
12 | 7 | sobi | 2013-08-18 | 07:01:12 | 07:01:12|
------------------------------------------------------------------------------------
これが私のクエリです:
$cal_data = array();
for($i=1;$i<=31;$i++)
{
$date = "$year-$month-$i";
$this->db->select('(SELECT COUNT(id) as count_s FROM schedule WHERE date_reserve='.$date.' GROUP BY start_time) as count', FALSE);
$this->db->select('date_reserve,borrowerID,start_time,end_time');
$this->db->from('schedule');
$this->db->where('date_reserve',"$year-$month-$i");
$this->db->group_by('start_time');
$query = $this->db->get();
foreach ($query->result() as $row) {
$cal_data[$i] = ($row->count > 0) ? $row->count.' ' .'event(s)' : '';
}
}
したがって、期待される出力は次のようになります。
count | date_reserve | borrowerID | start_time | end_time
---------------------------------------------------------------------------------------------------
1 | 2013-08-16 | bobi | 07:01:12 | 07:01:12
ここには大きなBUTがありますが、そのクエリでこの出力が得られます。注: I'm using CodeIgniter
.
サーバー上のMySQLに日付を使用$this->output->enable_profiler(TRUE);
して試してみて2013-08-16
(複数選択であるため)、これを提供してくれました。
count | date_reserve | borrowerID | start_time | end_time
---------------------------------------------------------------------------------------------------
NULL | 2013-08-16 | bobi | 07:01:12 | 07:01:12
では、これに対する解決策は何だと思いますか?