請攻擂台:一個關于多BOM查詢的Select 語句

zeng_zhh 2001-08-17 12:46:06
BOM組成:
產品---->|-->模塊-->零件
|
|-->包裝零件
共涉及到四個表.
Tbl_BOM_Product 此表保存組成產品的BOM列表
Tbl_BOM_Group 此表保存組成模塊的BOM列表
Tbl_Part 此表保存產品,模塊,零件等的基本資料
Tbl_Stock 此表保存零件庫存數

各表結构如下:
Tbl_BOM_Product 'Quantity是用量
Product_No Part_No Quantity
Prod001 G001 1
Prod002 G001 1
Prod003 G002 2
Prod001 Part001 3
Prod003 Part001 3
Prod002 Part005 6
----------------
Tbl_BOM_Group 'Quantity是用量
Group_No Part_NO Quantity
G001 Part004 2
G001 Part007 1
G001 Part013 3
G002 Part002 2
G002 Part004 1
----------------
Tbl_Part '如果Part_Type 等于I屬于零件,等于S屬于產品,等于G屬于模塊
Part_No Part_Name Part_Type
Part001 aa I
Part002 bb I
Part004 cc I
Part005 dd I
Part007 ee I
Part013 ff I
Prod001 PP1 S
Prod002 PP2 S
Prod003 PP3 S
G001 GG1 G
G002 GG2 G
----------------
Tbl_Stock ' 不同倉庫可以存放相同的零件
Part_No Stock WareHouse
Part001 400 WH1
Part004 1200 Wh2
Part001 300 Wh2
.... ...
應該描述清楚了吧,那好,就說說我要得到什么結果.
其實我要根据多個產品求出他們的零件列表,即輸入產品Prod001 150個,Prod002 100個,Pro003 50 個,給我算出他們總共需要多少零件
結果形式為: 'xxxxxx為總數
Part_NO Part_Name Total_Quantity Stock Balance
-----------------------------------------------
Part001 aa xxxxxx yyyyy xxxxxx-yyyyy
Part002 bb xxxxxx yyyyy ..
.... ... ......

要求要用一條Select 語句實現,要考慮實現速度和效率,重分獎賞.
...全文
1122 77 打赏 收藏 转发到动态 举报
写回复
用AI写文章
77 条回复
切换为时间正序
请发表友善的回复…
发表回复
zeng_zhh 2001-08-23
  • 打赏
  • 举报
回复
妳能說說么?我還真不懂.
crycoming 2001-08-23
  • 打赏
  • 举报
回复
难怪都不懂CSDN的规矩
zeng_zhh 2001-08-23
  • 打赏
  • 举报
回复
結帳買單囉.
多謝各位的參与.
zeng_zhh 2001-08-22
  • 打赏
  • 举报
回复
我覺得做出軟件來并不難,難就難在實施上.
如果管理思想不轉變過來,還是照老一套,那么上這樣一套解決方案還不如不上好.
同時軟件設計的太嚴密也不好,要給客戶一點靈活性,這很重要.
并不是軟件用的技術越先進,包含的越全面就越好,還要考慮用戶的适用性和需求.

這只是一家之見.
zeng_zhh 2001-08-22
  • 打赏
  • 举报
回复
我來這里也是不到兩個月.

這里沒有這些討論的么? 不是說這里是什么大本營么?
Frank_Xu 2001-08-22
  • 打赏
  • 举报
回复
我上CSDN才是最近一個月.
crycoming 2001-08-22
  • 打赏
  • 举报
回复
我做ERP系统,如果你不是一个仅会写语句的人,我非常希望能交到这样的朋友
但我在CSDN上呆了半年多了,好像这样的人很少露面
zeng_zhh 2001-08-22
  • 打赏
  • 举报
回复
不好意思,現在才上來看.
To: Frank_Xu() 
我發這貼子的本意就是為了能在這里找到交流的空間,很希望能交上妳這個朋友,只是不知我有沒有能力跟上妳,因為我在MRP方面沒有系統的研究,所知有限.我會經常到妳主頁去轉轉的,希望能看到妳的新東西.
TO: 瞎编老兄
妳的運用SQL語句的能力不錯.只是不知妳的工作是有關于哪方面的?如果只會寫語句,那脩為也不是很高.如果有一些自己的想法那就更好了.

明天再結帳了.
zeng_zhh 2001-08-21
  • 打赏
  • 举报
回复
TO: Frank_Xu()
那妳認為貼哪好,我給妳轉.
妳的方案确實不錯.但有些他們不是這樣用的.因為在很多工厂中,生產每一單都是為特定客戶生產的.而客戶不同他們對同一种產品的一些功能就不同,有些需要,有些不需要.這就需要很明顯的標識出這樣一种情況.

我還沒說完,不過現在有事,下午我再貼出來.
Frank_Xu 2001-08-21
  • 打赏
  • 举报
回复
這里面好象沒有幾個是做個MRPII的.
貼在這里沒多大意思,沒什麼人務實在參與.
Frank_Xu 2001-08-21
  • 打赏
  • 举报
回复
看到我上面貼的四個資料表嗎?EBomSubTemp只是用來在做BOM更新時用到.
一種成品可能是幾個版本號的,出貨時一般不會分是哪個版本的,只要是同一個產品就行.
因此,一般版本號與產品型號不能合並,而是分開的.

BOM中要有BOM復制功能.

算了,過幾天我把此相關的問題和我的解決方法(即後來BOM,我也好久沒去更新MRPII了)貼到我的主頁上,懶得貼了.
1995 2001-08-21
  • 打赏
  • 举报
回复
我写了些程序完成了对 .jm文件和我的程序的关联,但双击,名为:项目2000.doc.jm 文件后,通过command()返回的值是8.1式的文件名“项目~1.doc”,我也试过api,没办法,只好救助各位高手了!

我的mail:qcis@china.com 1995@0451.com
qq: 5533655
1995 2001-08-21
  • 打赏
  • 举报
回复
我有3500分想交个朋友!我又没问题怎么办呀?
Frank_Xu 2001-08-21
  • 打赏
  • 举报
回复
我不知道CSDN的分到底有什麼用.大家都這麼去爭......
能當實際的Money用嗎?????
Frank_Xu 2001-08-21
  • 打赏
  • 举报
回复
To: zeng_zhh(紫河)
crycoming要分,你就給他吧!要不,他晚上睡不著覺的.(不要生氣,我看了你的貼,好象是沖著分來的)

我的目的,看能否在這里交個MRPII方面的朋友.

crycoming 2001-08-21
  • 打赏
  • 举报
回复
to:Frank_Xu
有什么问题开自己开一个,不要拿mrp II 往自己脸上贴金,这一招往别处使去,CSDN上行不通的
to:cainiaobus
库存为零的部件没出来,不过你的原理跟zeng_zhh(紫河) 给出的一样,所以问题同样不能解决
to:zeng_zhh(紫河) 
能给出高分的应该是有一定水准的人,也应该是守信的人吧?
KingSunSha 2001-08-21
  • 打赏
  • 举报
回复
哈哈,不好意思,我不是搞这一行的,根据要求写sql还可以,BOM没法和你们讨论下去了,太深奥了。
Frank_Xu 2001-08-20
  • 打赏
  • 举报
回复
我說我上面貼的資料表結構與你所想的資料表區別在哪里?
zeng_zhh 2001-08-20
  • 打赏
  • 举报
回复
// 你覺得這個表與兩個表的區別在哪里嗎?

我沒明白妳說的這個表和兩個表是指那些表?
cainiaobus 2001-08-20
  • 打赏
  • 举报
回复
寫完這些,我都暈了,以后再也不听zeng_zhh(紫河)的了,
如果是,我一定要另外考慮重新建表,我也不急於用一條命令,
不過既然提了來了,那就轉轉,
轉出來了,也不知道對錯以及速度怎樣,幫我看一下吧.


select aa.part_no,Total_Quantity as Total_Quantity,aa.part_name,sum(bb.quantity) as stock,sum(bb.quantity)-Total_Quantity AS Balance
from
(select g.part_no,sum(g.qty) as Total_Quantity,g.part_name
from
(select a.part_no,a.quantity as qty,b.part_name
from (select x.product_no,x.part_no,x.quantity*y.quantity as quantity from tbl_bom_product as x,tbl_pa as y where x.product_no=y.product_no)
a inner join tbl_part b on a.part_no=b.part_no where b.part_type='I'
union all
select f.part_no,f.qty, e.part_name
from tbl_part as e inner join
(select c.product_no,d.part_no,c.quantity*d.quantity as qty
from (select x.product_no,x.part_no,x.quantity*y.quantity as quantity from tbl_bom_product as x,tbl_pa as y where x.product_no=y.product_no)
c inner join tbl_bom_group d on c.part_no=d.group_no) as f on e.part_no=f.part_no
)
as g
group by g.part_no,g.part_name )
as aa inner join tbl_stock as bb on aa.part_no=bb.part_no
group by aa.part_no,aa.Total_Quantity,part_name


我照你最先提供的數據,運行結果是:

part_no Total_Quantity Part_name Stock Balance

Part001 600 aa 700 100
part004 600 cc 1200 600


加载更多回复(57)

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧