مرحبًا، استخدم هذا الاستعلام في وحدة التحكم الخاصة بي ويعمل، يعرض هذا الاستعلام بيانات التوزيع اليومي للقيم التي تم تصفيتها باستخدام نموذج،، وذلك قابل للتعديل لأنه عندما لا تُعين بعض معلمات التصفية، فإنني لا استخدمها في استعلامي.
$query =Measure::query()->select(DB::raw('DATEPART(hour, DATETIME_D) AS HOUR_N'))->selectRaw('SUM(CASE WHEN STATUS_N > 0 THEN 1 ELSE 0 END) AS OK_N')->selectRaw('SUM(CASE WHEN STATUS_N <= 0 THEN 1 ELSE 0 END) AS NOK_N')->where('MEASUREID_N','>',0)->where('DATETIME_D','>=', $dfrom)->where('DATETIME_D','<=', $dto);
$query->when($serial_number,function(Builder $q,string $serial_number){
$q->where('PRODSN_S','=', $serial_number);});
$query->when($user_id,function(Builder $q,string $user_id){
$q->where('USERID_S','=', $user_id);});
$query->when($product_id,function(Builder $q,string $product_id){
$q->where('PRODID_S','LIKE','%'. $product_id .'%');});
$query->when($area,function(Builder $q,string $area){
$q->join('AREAS_DEF','MEASURES.AREAID_N','=','AREAS_DEF.AREAID_N')->where('AREAS_DEF.NAME_S','=', $area);});
$query->when($phase,function(Builder $q,string $phase){
$q->join('PHASES_DEF','MEASURES.PHASEID_N','=','PHASES_DEF.PHASEID_N')->where('PHASES_DEF.NAME_S','LIKE','%'. $phase .'%');});
$query->groupBy(DB::raw('DATEPART(hour, DATETIME_D)'))->orderBy(DB::raw('DATEPART(hour, DATETIME_D)'));
ذلك يعمل بشكل جيد وبسرعة.
ولكن عندما استخدم نفس الاستعلام مع بعض المعلمات المختلفة التي تعيد توزيعًا أسبوعيًا، لا يتم حل الاستعلام ويبدو أنه معلق ومجمد، وهذا هو الاستعلام:
$query =Measure::query()->select(DB::raw('DATEPART(dw, DATETIME_D) AS DAY_N'))->selectRaw('SUM(CASE WHEN STATUS_N > 0 THEN 1 ELSE 0 END) AS OK_N')->selectRaw('SUM(CASE WHEN STATUS_N <= 0 THEN 1 ELSE 0 END) AS NOK_N')->where('MEASUREID_N','>',0)->where('DATETIME_D','>=', $dfrom)->where('DATETIME_D','<=', $dto);
$query->when($serial_number,function(Builder $q,string $serial_number){
$q->where('PRODSN_S','=', $serial_number);});
$query->when($user_id,function(Builder $q,string $user_id){
$q->where('USERID_S','=', $user_id);});
$query->when($product_id,function(Builder $q,string $product_id){
$q->where('PRODID_S','LIKE','%'. $product_id .'%');});
$query->when($area,function(Builder $q,string $area){
$q->join('AREAS_DEF','MEASURES.AREAID_N','=','AREAS_DEF.AREAID_N')->where('AREAS_DEF.NAME_S','=', $area);});
$query->when($phase,function(Builder $q,string $phase){
$q->join('PHASES_DEF','MEASURES.PHASEID_N','=','PHASES_DEF.PHASEID_N')->where('PHASES_DEF.NAME_S','LIKE','%'. $phase .'%');});
$query->groupBy(DB::raw('DATEPART(dw, DATETIME_D)'))->orderBy(DB::raw('DATEPART(dw, DATETIME_D)'));
حاولت إزالة معلمات 'LIKE' وتعيين '=' بدلاً منها وأصبح الأمر سريعًا، وهذا غريب لأن عندما أجرب الاستعلام في SQL Manager، يكون سريعًا وبدون أخطاء، لقد واجهت تلك المشكلة بالفعل مع استعلامات أخرى كان فيها التطابق الجزئي.
السؤال
Abdelrahman Mostafa10
مرحبًا، استخدم هذا الاستعلام في وحدة التحكم الخاصة بي ويعمل، يعرض هذا الاستعلام بيانات التوزيع اليومي للقيم التي تم تصفيتها باستخدام نموذج،، وذلك قابل للتعديل لأنه عندما لا تُعين بعض معلمات التصفية، فإنني لا استخدمها في استعلامي.
ذلك يعمل بشكل جيد وبسرعة.
ولكن عندما استخدم نفس الاستعلام مع بعض المعلمات المختلفة التي تعيد توزيعًا أسبوعيًا، لا يتم حل الاستعلام ويبدو أنه معلق ومجمد، وهذا هو الاستعلام:
حاولت إزالة معلمات 'LIKE' وتعيين '=' بدلاً منها وأصبح الأمر سريعًا، وهذا غريب لأن عندما أجرب الاستعلام في SQL Manager، يكون سريعًا وبدون أخطاء، لقد واجهت تلك المشكلة بالفعل مع استعلامات أخرى كان فيها التطابق الجزئي.
هل واجه أحدكم مشاكل مماثلة من قبل؟
1 جواب على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.