求产品和商家对应关系算法

发布于 2022-09-04 12:36:28 字数 257 浏览 5 评论 0

数据库中有如下数据:

商家1 001
商家1 002
商家1 003
商家2 001
商家2 002
商家2 003
商家3 001
商家3 002
商家3 003
......

希望组合成:商家1->array(001, 002, 003), 商家2->array(001, 002, 003)......这种格式的数据

是否可以用sql查询出来,或者查询出全部数据后怎样高效率的组合?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

时光病人 2022-09-11 12:36:28

select 商家字段,group_concat(DISTINCT 产品字段) form 表 group by 商家字段;然后格式化下数据。

半寸时光 2022-09-11 12:36:28

数量大不建议group,会很影响速度。建议全部查询然后php处理数组
eg:
// 获取全部数据得到数组如下
$data = array(

        array(
            'seller_id'  => '商家1',
            'product_id' => '001'
         ),
         array(
            'seller_id'  => '商家1',
            'product_id' => '002'
         ),
         array(
            'seller_id'  => '商家1',
            'product_id' => '003'
         ),
         array(
            'seller_id'  => '商家2',
            'product_id' => '001'
         ),
         array(
            'seller_id'  => '商家3',
            'product_id' => '001'
         ),
         array(
            'seller_id'  => '商家3',
            'product_id' => '002'
         ),
         array(
            'seller_id'  => '商家3',
            'product_id' => '003'
         ),
);

$result = array();
foreach($data as $value) {

if(empty($value)) {
    continue;
}
$result[$value['seller_id']][] = $value['product_id'];

}

var_dump("<pre>", $result);die;

就是得到了你要的数据:

![图片上传中...]

情深已缘浅 2022-09-11 12:36:28
select seller_id,product_id form table group by seller_id limit 0,10;
 试试这样
强者自强 2022-09-11 12:36:28

@koreyoshi 翻译过来就是这样:
SELECT seller_id,GROUP_CONCAT(product_id) FROM product GROUP BY seller_id;

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文