mysql多對一數據統計

需求:現在我們現在有一個託運單表和整車表,託運單表的字段有送貨類型 1自提;還 2配送有一個託運單包含多件貨物。

一輛整車運輸的時候包含多張託運單,一個託運單也可能多輛車送。現在需要分頁顯示每一輛整車包含託運單的數據量,以及包含的貨物數據、和自提有多少票託運單,送貨的有多少託運單。整車表z_company_vehicle_stowage,託運單關係表z_company_vehicle_waybill ,託運表z_company_waybill 。

處理方式一、整車左連接託運單關係表,左連接託運單表,然後分頁查詢鏈接表。統計託運單的時候在後臺for循環,每個託運單,然後將數量統計起來。(自己當時就是這麼蠢的乾的)。

處理方式二、整車左連接託運單關係表,左連接託運單表,然後分頁查詢連接表,其實統計這些數據庫都有相關的函數count和SUM,然後分組顯示就可以實現,sql如下:

select s.id, count(w.id), SUM(w.goods_number), SUM(case when w.delivery_type = 2 then 1 else 0 end) count_sum
    from z_company_vehicle_stowage s LEFT JOIN z_company_vehicle_waybill z ON s.id = z.company_vehicle_stowage_id
    LEFT JOIN z_company_waybill w ON z.company_waybil_id = w.id WHERE ( s.id is not null )  GROUP BY s.id order by id desc LIMIT 0, 20

當年我出來的還幹過一件牛逼的事,就是經理讓我在後臺首頁統計訂單數據量,我竟然在後臺分頁查詢所有的訂單訂單,然後將他們的數據加起來,然後返回給頁面。然後每次項目一啓動,進去後臺首頁,後臺的內存就直接溢出了。原因是我們的訂單表數據有幾十萬條,這麼多數據加載到內存,然後統計,肯定內存會爆炸的。記錄起來,千萬不要再犯這樣的錯誤。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章