让我们考虑一下我在这个表DataTable dataTable = (DataTable)dataGridView.DataSource;
DataRow drToAdd = dataTable.NewRow();
drToAdd["Field1"] = "Value1";
drToAdd["Field2"] = "Value2";
dataTable.Rows.Add(drToAdd);
dataTable.AcceptChanges();
中的一些样本数据。
我需要将这些数据分为三类,如下所述。
query1 =获取所有记录:parameters
,因为此情况下,oupout是第一条记录。这个查询没问题。
query2 =获取所有记录:param1=param2=param3= 100%
,因为这种情况下的输出是第二个和第三个记录。
query3 =获取所有记录:at least param1 < 80 OR param2 < 80 OR param3 < 80 OR all
,因为此案例中的输出是第四和第五条记录。
我真的在查询2和查询3中存货。 bellow是我使用laravel查询构建器的查询。
at least param1 >= 80 OR param2 >= 80 OR param3 >= 80 BUT NOT ALL EQUAL to 100%
希望我的问题是clair enougth。在此先感谢您的帮助。
答案 0 :(得分:1)
我认为你可以更容易地使用三个参数的平均值,因为你有一个值得尊重的间隔。
//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'));
希望它会对你有所帮助。
答案 1 :(得分:0)
嘿,你不能在一个查询中使用三个whereBetween()和你的 query2 =你提到了param1,param2,param3&lt; 80查询应该是
$query = DB::table('parameters')
->whereBetween('param1', [0, 80])->get();
同样的方式查询3
$query = DB::table('parameters')
->whereBetween('param1', [80, 100])->get();
对每个列使用查询使用所有查询的规则 使用此链接 - link
编辑回答
public function getData($id)
{
$query = DB::table('parameters')->find($id);
if($query->param1==100 && $query->param2==100 && $query->param3==100){
}elseif($query->param1<80 or $query->param2<80 or $query->param3<80){
}else{
}
}
正确布置此功能,您将获得输出:)