>  Q&A  >  본문

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

数据库中有如下数据:

商家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查询出来,或者查询出全部数据后怎样高效率的组合?

高洛峰高洛峰2722일 전447

모든 응답(4)나는 대답할 것이다

  • 巴扎黑

    巴扎黑2017-04-11 09:50:47

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

    회신하다
    0
  • 怪我咯

    怪我咯2017-04-11 09:50:47

    数量大不建议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;

    就是得到了你要的数据:

    ![图片上传中...]

    회신하다
    0
  • ringa_lee

    ringa_lee2017-04-11 09:50:47

    select seller_id,product_id form table group by seller_id limit 0,10;
     试试这样

    회신하다
    0
  • 天蓬老师

    天蓬老师2017-04-11 09:50:47

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

    회신하다
    0
  • 취소회신하다