1. 程式人生 > >基於ACCESS和ASP的SQL多個表查詢與計算統計程式碼(二)庫存管理系統

基於ACCESS和ASP的SQL多個表查詢與計算統計程式碼(二)庫存管理系統

距離上一篇《基於ACCESS和ASP的SQL多個表查詢與計算統計程式碼(一)》竟然已經一年半的時間,明日復明日呀,藉著這次寫庫存管理系統的機會,再總結一些ACCESS和ASP的SQL問題。此次總結的要點在於把查詢(Select語句)作為表(AS語句)與表或查詢再次進行Select的多表查詢方法,邏輯上要很注意,非常容易把自己繞進去。

一、問題的提出


【出庫和入庫明細的Select語句,需要寫出一個庫存Select查詢,包括A倉、B倉和分倉。】

二、解決入庫、出庫的統計

那麼,首先Select Sum(入庫數量),並Group By 產品編號,Having(入庫倉庫=A倉),可以形成一個對於A倉入庫的統計表,【入庫統計查詢】程式碼及結果如下。

SELECT chanpin.ID AS 序號, chanpin.CPno AS 產品編號, chanpin.CPpinpai AS 產品品牌, chanpin.CPname AS 產品名稱, chanpin.CPKind AS 產品規格, chanpin.CPunit as 計數單位, SUM(inck.INnum) AS 入庫數量
FROM inck INNER JOIN chanpin ON inck.INcp = chanpin.CPno
GROUP BY chanpin.ID, chanpin.CPno, chanpin.CPpinpai, chanpin.CPname, chanpin.CPKind, chanpin.CPunit, inck.ToCK
HAVING(inck.ToCK='KJC-A')

此時若【入庫統計查詢】直接以左鏈(LEFT JOIN)將出庫JOIN一起的話,會由於只能採用對應倉庫的方式接(ON 入庫.倉庫=出庫.倉庫)來連結,這樣只會重複計算形成冗餘,資料也是錯誤的,這並不是我需要的結果,如下看錯誤的測試:

SELECT chanpin.ID AS 序號, chanpin.CPno AS 產品編號, chanpin.CPpinpai AS 產品品牌, chanpin.CPname AS 產品名稱, chanpin.CPKind AS 產品規格, chanpin.CPunit as 計數單位, SUM(inck.INnum) AS 入庫數量, SUM(outck.OUTnum) as 出庫數量 
FROM (inck INNER JOIN chanpin ON inck.INcp = chanpin.CPno) 
Left JOIN outck ON inck.ToCK=outck.FromCK 
GROUP BY chanpin.ID, chanpin.CPno, chanpin.CPpinpai, chanpin.CPname, chanpin.CPKind, chanpin.CPunit, inck.ToCK 
HAVING(inck.ToCK='KJC-A')


這是個錯誤的結果,從入庫、出庫明細來看,總入庫、出庫均重複計算了,數值當然是錯誤的。因此,不能簡單的左連結來解決。

三、解決對入庫出庫的合併形成庫存表

經過畫簡單的拓撲圖,結論是應當把出庫統計查詢作為一個表來LEFT JOIN到入庫統計查詢裡,此時對於連結的欄位就不再是倉庫了,而是已產品編號為連結欄位,最後的結論及結果如下:

SELECT chanpin.ID AS 序號, chanpin.CPno AS 產品編號, chanpin.CPpinpai AS 產品品牌, chanpin.CPname AS 產品名稱, chanpin.CPKind AS 產品規格, chanpin.CPunit as 計數單位, SUM(inck.INnum) AS 入庫數量, IIF(AA.CC is not null,AA.CC,0) as 出庫數量, 入庫數量-出庫數量 as 庫存數量 
FROM (inck INNER JOIN chanpin ON inck.INcp = chanpin.CPno) 
left JOIN (select outck.outcp as BB, IIF(Sum(outck.OUTnum) is not null,Sum(outck.OUTnum),0) as CC From outck 
GROUP BY outck.outcp, outck.FromCK HAVING(outck.FromCK='KJC-A')) as AA ON inck.INcp = AA.BB 
GROUP BY chanpin.ID, chanpin.CPno, chanpin.CPpinpai, chanpin.CPname, chanpin.CPKind, chanpin.CPunit, inck.ToCK, AA.CC 
HAVING(inck.ToCK='KJC-A')

LEFT JOIN()部分為出庫統計查詢,作為表左連結到入庫統計查詢裡。


完成了A倉,同理可以完成B倉。

相關推薦

基於ACCESSASP的SQL查詢計算統計程式碼庫存管理系統

距離上一篇《基於ACCESS和ASP的SQL多個表查詢與計算統計程式碼(一)》竟然已經一年半的時間,明日復明日呀,藉著這次寫庫存管理系統的機會,再總結一些ACCESS和ASP的SQL問題。此次總結的要

EF的Include 在.NET Framework .net core 中進行查詢的時候不同的寫法

下午正在開開心心擼程式碼的時候,老闆叫我過去說要問我問題,因為老闆最近莫名對.Net產生興趣,開始自己看書擼後臺,所以經常把我叫辦公室問我一些我也不懂的問題(畢竟我也是渣渣,老闆也算是推動我學習進步的源泉,每次問完我我都要去先自己學一遍,再去教老闆)。 問題如下  在專案中

如何高效的編寫同步博客- 快速發布到渠道

block str 登錄 publish sof 兩種 關閉 ins mac osx 系列目錄 如何高效的編寫與同步博客(一)- 編寫 如何高效的編寫與同步博客(二)- 快速發布到多個渠道 一.前言 我們使用Markdown編寫博文,總免不了文章中出現圖片,這裏的圖片有

角度來理解協方差covariance

起源:協方差自然是由方差衍生而來的,方差反應的是一個變數(一維)的離散程度,到二維了,我們可以對每個維度求其離散程度,但我們還想知道更多。我們想知道兩個維度(變數)之間的關係,直觀的舉例就是身高和體重(青少年),我們採集到的資料裡面有一種固有的性質,那就是身高越高的樣本似乎總有著更大的體重,那我們如何衡量這種

地市搞起來了? 聯通廣東產業網際網路公司有啥新動作

  日前,中國聯通率先在廣東省注資壹億元成立“聯通(廣東)產業網際網路有限公司”和“聯通(廣東)產業網際網路研究院”,定位於為政府企業提供網際網路應用一站式解決方案。近日,聯通(廣東)產業網際網路公司與研究院有了新動作,紛紛落地各地市設立辦事處,廣東聯通這是要幹嘛? 運營商世界網瞭

如何高效的編寫同步部落格- 快速釋出到渠道

系列目錄 一.前言 我們使用Markdown編寫博文,總免不了文章中出現圖片,這裡的圖片有兩種型別,一種是放在網際網路上的,一種是放在本地的。如果我引用的是網際網路上的圖片(如 https://xxx.com/xxx.png ),我們在各個渠道釋出的時候只需要複製貼上即可,但是這帶來一個問題,如果我們引用圖

itext pdf寫入不可見附件隱藏檔案,查詢,修改,刪除

接上篇查詢如下: public static void main(String[] args) throws FileNotFoundException, IOException, DocumentException { String SRC = "D:

在 Linux 命令列中使用執行 PHP 程式碼:12 PHP 互動性 shell 的用法

Run PHP Codes in Linux Commandline 本文旨在讓你瞭解一些相當不錯的Linux終端中的PHP互動性 shell 的用法特性。 讓我們先在PHP 的互動shell中來對php.ini設定進行一些配置吧。 6. 設定PHP命令列提示符

QML建立一個帶下拉輸入框的視窗ComboBox

在網上搜了很多資料,用QML怎麼實現下拉框的方法很少,並且都很複雜,我按照他們的方法實現的下拉框效果並不是很好,在問了公司的老司機後,他告訴我一個很好用的QML類:ComboBox,下面直接看程式碼和效果圖 import QtQuick 2.5 import QtQuick

關於Fragment切換,退出整個應用APP後,第二次開啟應用的報錯解決

第二次開啟APP的時候,fragment事物的.commit()或者 在退出整個應用的那個Activity,如HomeActivity的重寫回退事件onBackPressed()裡面寫上android.os.Process.killProcess(android.os.

基於 abp vNext .NET Core 開發部落格專案 - Blazor 實戰系列

## 系列文章 1. **[基於 abp vNext 和 .NET Core 開發部落格專案 - 使用 abp cli 搭建專案](https://www.cnblogs.com/meowv/p/12896177.html)** 2. **[基於 abp vNext 和 .NET Core 開發部落格專案

iptables實用教程管理策略

否則 命令顯示 accept 目的 number cep 存在 當前 末尾 概念和原理請參考上一篇文章“iptables實用教程(一)”。 本文講解如果管理iptables中的鏈和策略。 下面的代碼格式中,下劃線表示是一個占位符,需要根據實際情況輸入參數,不帶下劃線的表示是

“面向對象”談戀愛 - 對象相關概念

是個 DG 證件 就是 原型對象 了無 結果 弟弟 IV 上一篇文章把對象的概念講解了一下,這篇文章要重點解釋最讓大家犯迷糊的一些概念,包括 構造函數 實例 繼承 構造函數的屬性與方法(私有屬性與方法) 實例的屬性與方法(共享屬性與方法) prototype(原型) _

基於公有雲平臺實現直播、點播及小視頻功能

騰訊 去除 使用 商業 png wowza 技術分享 傳感器 都是 呵呵,上一節不知道怎麽的就開始扯起了電視的發展,不過確實是勾起了我童年的回憶,這節我們正式進入正題,先說說直播。直播這個詞看到以後,讓我們想到的是什麽?其實感覺也沒什麽,因為已經很普及,是否更多的是想到了直

基於C#.NET的高端智能化網絡爬蟲攻破攜程網

nbsp net article 智能 tail 攜程網 .net 網絡爬蟲 準備工作 轉:https://www.toutiao.com/i6304492725462893058/ https://blog.csdn.net/hjkl950217/article/det

C6748對EDMA的操作通過EMIFAFPGA傳輸資料

/****************************************************************************/ /*

百度地圖高德地圖結合在web中的使用

百度地圖在web中的使用(二) 背景:在做一個關於地理位置欄位時,初始位置使用百度地圖獲取時失敗,獲取的位置資訊不準確,奈何產品說友商好使的啊,F12看後是採用的高德,所以在這採用高德地圖獲取初始位置,其他的還是用百度地圖 註冊高德,建立例項,獲取key值 引入js 高德地圖獲取獲取當前

基於STM32F407的bootloader、IAP、Flash_APP、上位機設計

基於STM32F407的bootloader、IAP、Flash_APP、上位機設計 第一部分:Flash_App設計 前期準備: 一、硬體:STM32F407VET6板一塊,IAP使用串列埠通訊,板上需引出串列埠或有DB9介面都行(如果不使用串列埠,使用其他協議均可)

執行緒之原子變數CAS演算法

上篇博文,我們介紹了多執行緒之記憶體可見性Volatile(一),但是也遺留了一個問題,如何保證變數的”原子性操作(Atomic operations)”? Volatile保證部分型別的原子性 上篇博文,我們說Voloatile不能保證原子性,有一點侷

Qt總結之:遍歷資料夾檔案目錄,並過濾獲取檔案資訊、字尾名、字首名

前言 需要在特定目錄或磁碟下查詢特定檔案 一、篩選目錄 (一)單一目錄下遍歷,篩選特定檔案 QDir dir("./SaveFiles"); QFileInfoList list = dir.entryInfoList(); (二)裝置所有磁碟中遍歷 QF