问题描述
我正在尝试构建一个SQL查询,该查询将从与我定义的选项匹配的表中选择所有订单。
[
[
"user_id" => 1,"product_id" => 5548,"variation_id" => 14
],[
"user_id" => 1,"variation_id" => 15
],"product_id" => 4422,"variation_id" => 4
]
]
这意味着用户(id:1)拥有一个产品的“ id”为5548,然后他还具有该产品的2个变体,分别为“ id” 14和15。您还可以看到相同的用户拥有具有差异(id:4)的产品(id:4422)。
order_lines
+----+-----+---------+-----------------------------+
| id | uid | user_id | product_id | variation_id |
+----+-----+---------+-----------------------------+
| 1 | 1 | 1 | 5548 | 14 |
+----+-----+---------+-----------------------------+
| 2 | 2 | 1 | 5548 | 15 |
+----+-----+---------+-----------------------------+
| 3 | 3 | 1 | 4422 | 4 |
+----+-----+---------+-----------------------------+
| . | . | . | .... | .. |
+----+-----+---------+-----------------------------+
我现在需要一个SQL查询,该查询将选择数组中定义的user_id,product_id和variation_id之间匹配的所有行。
输出应包含满足这些条件的所有行。
我希望有人可以将我固定在正确的方向上。
如果您可以使用查询构建器,那么我将在Laravel中构建。另外,我非常感谢SQL查询。
解决方法
如果我说对了,那么下面的代码将仅使用Core PHP即可为您提供帮助
df = pd.concat([df1,df2,df3],keys=['df1','df2','df3'],names=['frame'])
df.loc[(df.index.levels[0],0),'col1'].tolist()
,
请尝试以下代码以使用Laravel Query Builder,以下代码将帮助您根据产品和版本获取多个用户的结果。
$qb_order_lines = DB::table('order_lines');
$where_condition = [
['user_id' => '','product_id' => '','variation_id' => ''],];
foreach ($where_condition as $condition) {
$qb_order_lines->orWhere(function($query) use ($condition) {
$query->where('user_id',$condition['user_id'])
->where('product_id',$condition['product_id'])
->where('variation_id',$condition['variation_id']);
});
}
$obj_result = $qb_order_lines->get();
如果只想获取一个用户,请使用以下代码
$obj_result = DB::table('order_lines')
->where('user_id',$condition['user_id'])
->where('product_id',$condition['product_id'])
->where('variation_id',$condition['variation_id'])
->get();
您可以根据您的要求(例如选择字段或分组依据)修改上述查询构建器。
让我知道您是否需要任何帮助。
,对任何有兴趣的人。
我的问题是我需要计算数组和数据库之间的许多匹配项。
代替选择和输出。我在查询中使用了sql count()函数,完成了这项工作。