1. 程式人生 > >MySQL子查詢關聯商品表和訂單表

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'];
}

查詢的商品銷量訂單: