1. 程式人生 > 資料庫 >mysql實現多表關聯統計(子查詢統計)示例

mysql實現多表關聯統計(子查詢統計)示例

本文例項講述了mysql實現多表關聯統計的方法。分享給大家供大家參考,具體如下:

需求:

統計每本書打賞金額,不同時間的充值資料統計,消費統計,

設計四個表,book 書本表,orders 訂單表 reward_log打賞表 consume_log 消費表 ,通過book_id與book表關聯,

問題:

當關聯超過兩張表時導致統計時資料重複,只好用子查詢查出來,子查詢只能查一個欄位,這裡用CONCAT_WS函式將多個欄位其拼接

實現:

查詢程式碼如下

SELECT
b.id,b.book_name,sum( IF ( o.create_time > 0 && o.create_time < 9999999999,o.price,0 ) ) today_pay_money,1,0 ) ) today_pay_num,sum( IF ( o.create_time > 999 && o.create_time < 9999,0 ) ) yesterday_pay_money,0 ) ) yesterday_pay_num,sum(o.price) total_pay_money,sum( IF ( o.create_time > 9999 && o.create_time < 99999,0 ) ) total_pay_num,( SELECT SUM( total_score ) FROM book_reward_log WHERE book_id = b.id ) total_score,(
 SELECT
 CONCAT_WS(
  ',',SUM( IF ( create_time > 0 && create_time < 998,score,0 ) ),SUM( IF ( create_time > 9999 && create_time < 99998,SUM( IF ( create_time > 99999 && create_time < 999998,0 ) )
 )
 FROM
 book_consume_log
 WHERE
 book_id = b.id
 ) score
 FROM
 book_book b
 LEFT JOIN book_orders o ON b.id = o.bid
GROUP BY
 b.id

查詢結果

score 為三個消費數,以逗號隔開

效能分析

更多關於MySQL相關內容感興趣的讀者可檢視本站專題:《MySQL查詢技巧大全》、《MySQL常用函式大彙總》、《MySQL日誌操作技巧大全》、《MySQL事務操作技巧彙總》、《MySQL儲存過程技巧大全》及《MySQL資料庫鎖相關技巧彙總》

希望本文所述對大家MySQL資料庫計有所幫助。