MySQL子查詢關聯商品表和訂單表
阿新 • • 發佈:2019-02-02
在擼程式碼寫程式的時候,免不了要用到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']; }
查詢的商品銷量訂單: