让我们考虑一下senario,其中我有一个带有一些示例数据的表parameters
mysql - 如何使用laravel Query Builder进行复杂的查询-LMLPHP
我需要将这些数据分为三类,如下所述。
query1=获取所有具有以下内容的记录:param1=param2=param3= 100%在本例中,outout是第一条记录。这个查询没有问题。
query2=获取所有具有以下内容的记录:at least param1 < 80 OR param2 < 80 OR param3 < 80 OR all在本例中,输出是第二条和第三条记录。
query3=获取所有具有at least param1 >= 80 OR param2 >= 80 OR param3 >= 80 BUT NOT ALL EQUAL to 100%的记录,从本例中,输出是第四和第五条记录。
我在Query2和Query3都有存货。下面是我使用laravel查询生成器的查询。

            $query = DB::table('parameters');
            if ($query === 1) {
                $query->where('param1', '=', 100)
                      ->where('param2', '=', 100)
                      ->where('param3', '=', 100);
            }elseif ($query === 2) {
                $query->where('param1', '<', 80)
                      ->where('param2', '<', 80)
                      ->where('param3', '<', 80);
            }else{
                $query->whereBetween('param1', [80, 100])
                      ->whereBetween('param2', [80, 100])
                      ->whereBetween('param3', [80, 100]);
            }
            $result = $query->get();

希望我的问题是克莱尔·伊努格。提前谢谢你的帮助。

最佳答案

我想你用三个参数的平均值比较容易,因为你有一个值得尊重的区间。

//param_avg = (param1 + param2 + param3)/3;

$query = DB::table('parameters')->get();
//For query 1
    $query->where('param1', '=', 100)
          ->where('param2', '=', 100)
          ->where('param3', '=', 100);

//For query2
 $query->where('param1', '<', 100)
       ->where('param2', '<', 100)
       ->where('param3', '<', 100);

//For query3
$query->select(DB::raw('WHERE (param1 + param2 + param3)/3 <=80 AND (param1 + param2 + param3)/3 <100'));

希望对你有帮助。

关于mysql - 如何使用laravel Query Builder进行复杂的查询,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35182414/

10-14 15:24