現在、これは私のphpスクリプトです:
$users = DB::select('id', 'email', 'firstname', 'lastname')->from('users')->execute()->as_array();
$orders = array();
foreach($users as $user)
{
$anyOrder = DB::select('id')->from('orders')
->where('orders.date_created', 'BETWEEN', array($from, $to))
->and_where('orders.user_id', '=', $user['id'])
->and_where_open()
->and_where('orders.status', '=', 'new')->or_where('orders.status', '=', 'delivered')
->and_where_close()
->execute()->count();
if($anyOrder == 0)
{
$orders[] = array('firstname' => $user['firstname'], 'lastname' => $user['lastname'], 'email' => $user['email']);
}
}
(DB::select() はクエリです。私は kohana クエリ ビルダーを使用しています)。
何千人ものユーザーがいる今まで、これはうまくいきました。
これをどのように簡素化して迅速化できますか?
スクリプトが行うことは、$from と $to の間に注文がないすべての人を $orders 配列に保存することです。