問題描述:根據店鋪ID查出該店鋪所有商品的剩餘庫存量?
業務說明:該商品剩餘庫存量 = 該商品總入庫記錄和 - 該商品總銷售和。
抽象以後的資料庫表結構如下:
問題抽象:用MySQL查詢1號店鋪所有商品的剩餘庫存資訊?
致謝:希望有大神幫忙解決下,SQL學的實在太爛,如果一條SQL不能實現,可以說一下SQL跟PHP結合實現的方法,當然如果SQL能實現最好。非常感謝!
回複內容:
問題描述:根據店鋪ID查出該店鋪所有商品的剩餘庫存量?
業務說明:該商品剩餘庫存量 = 該商品總入庫記錄和 - 該商品總銷售和。
抽象以後的資料庫表結構如下:
問題抽象:用MySQL查詢1號店鋪所有商品的剩餘庫存資訊?
致謝:希望有大神幫忙解決下,SQL學的實在太爛,如果一條SQL不能實現,可以說一下SQL跟PHP結合實現的方法,當然如果SQL能實現最好。非常感謝!
看來沒人回答啊,其實這也是資料庫設計時候的思想吧。如果入庫記錄跟銷售記錄合在一張表,然後用一條sql就可以解決,合并以後的表結構
店鋪ID |
商品ID |
入庫 |
銷售 |
001 |
1 |
10 |
3 |
001 |
2 |
10 |
5 |
SQL如下
select productid, sum(stock)-sum(sale) as total from `record` where shopid = '001' GROUP BY productid;
[個人觀點]這樣的設計機構與上邊相比較結構上沒有太大差異,設計上也基本合理,從計算上來講,現在這種結構應該更快一些。
給你一個方向吧!先用group by 過去單款商品的銷售總量,接著使用表關聯的方式,將進庫量與銷售總量進行運算
設計問題,很典型拍腦袋設計,沒有考慮需求分析
這是sql語句,多表查詢,一條sql實現,select shop.*,product.*,stock.*,sale.*,stock.count - sale.count as ss from shop left join product on shop.id = product.shop_id left join stock on product.id = stock.productid left join sale on product.id = sale.product_id where stock.count > 0 and sale.count > 0
,最後結果已經給出每種商品的剩餘庫存,
很明顯,我認為資料表設計不合理,既然剩餘庫存這麼重要,我認為需要增加這個欄位。
多表關聯查詢的速度是比較慢,而且特別耗費CPU,而剩餘庫存需要在很多時候被讀取,每次這樣查詢得到顯然我認為是不合理的。