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

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/xuyawei_xyw/article/details/82226993

      在撸代码写程序的时候,免不了要用到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'];
}

查询的商品销量订单:

猜你喜欢

转载自blog.csdn.net/xuyawei_xyw/article/details/82226993
今日推荐