MySQL子查询关联商品表和订单表

      在撸代码写程序的时候,免不了要用到MySQL关联表查询语句,而今天在做商品订单销量排行的时候,就更用到MySQL子查询了。子查询,说的通俗一点就是把一个查询得到的结果,作为查询条件嵌套在另一个查询当中,输出结果。如下:

//goods是商品表,order是订单表
//子查询语句 SELECT DISTINCT goods_id FROM `order` GROUP BY goods_id ORDER BY count(*) DESC
//子查询的语句查找到订单表里存在的商品id,其查询结果作为查找商品信息父查询
$sql = "SELECT * FROM `goods` WHERE id in ( SELECT DISTINCT goods_id FROM `order` GROUP BY goods_id )" ;
$goods = DB::GetQueryResult($sql,false);

     上面查询出来的结果是,找到了订单表里的商品信息。可是怎么知道,我这些商品分别卖了多少呢?想了一下,暂时没有特别好的方法,还是决定使用foreac()循环,查出的商品id,在订单表里统计每个商品的售出单数。

//一个空的数组
$goods_list = array();
foreach ($goods as $key => $value) {
    //从订单表里查循每个商品共多少个已付款
    //state = 'pay' 表示已经付钱
    $sql_goods = "SELECT * FROM `order` where goods_id = " .$value['id']. " AND state = 'pay' ";
    $orders_sale = DB::GetQueryResult($sql_goods,false);
    //将查找出来的售出单子统计为数字
    $goods_list[$key]['goods_sale_num'] = count($orders_sale);
    $goods_list[$key]['id'] = $value['id'];
    //$goods_list[$key]['title'] = $value['title'];
}

查询的商品销量订单:

 

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值