求一条综合查询语句

jaxio 2008-10-30 04:45:52
条件:成品A由B,C组成;A = 3个B +5个C

表1: stockquantity
id number storageid
A 20 1
B 30 2
B 40 3
C 20 2
C 50 3

表2:storage
id storage_name
1 成品仓
2 原料仓1
3 原料仓2

表3:TYPE id为主键
ID ProNAME
1 A

表4: proassem pro_typeid 为外键
id pro_typeid proname quantity
1 1 B 5
2 1 C 3


条件:输入A的名称,想得到结果为:
storagename proname quantity
原料仓1 B 20
原料仓1 c 30
原料仓1能得到A的数量: 4
原料仓2 B 40
原料仓2 c 50
原料仓2能得到A的数量: 8




...全文
174 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
jaxio 2009-02-20
  • 打赏
  • 举报
回复
问题已解决。。谢谢各位的关注
anchoret123 2009-01-13
  • 打赏
  • 举报
回复
关注
chendi0301 2009-01-10
  • 打赏
  • 举报
回复
楼主应该把你用例的数据通俗化点啊,大家好明白些,最好字段名能是中文的,表达出结果能再清楚些.学习中!
jimoshatan 2008-10-31
  • 打赏
  • 举报
回复
/***
总感觉LZ给出的结果不正确,我按照我的理解做了一下***/
CREATE TABLE #A (S_NO VARCHAR(10),QTY VARCHAR(10),C_NO VARCHAR(10))
INSERT INTO #A SELECT 'A',20,1
INSERT INTO #A SELECT 'B',30,2
INSERT INTO #A SELECT 'B',40,3
INSERT INTO #A SELECT 'C',20,2
INSERT INTO #A SELECT 'C',50,3

CREATE TABLE #B (C_NO VARCHAR(10),C_NAME VARCHAR(10))
INSERT INTO #B SELECT 1,'CHENGPIN'
INSERT INTO #B SELECT 2,'YUANLIAO1'
INSERT INTO #B SELECT 3,'YUANLIAO2'
SELECT (CASE WHEN SORT_NO=1 THEN C_NAME ELSE C_NAME+'得到A的数量' END)C_NAME,S_NO,QTY
FROM
(SELECT 1 SORT_NO,B.C_NAME,A.S_NO,A.QTY
FROM #B B LEFT JOIN #A A ON A.C_NO=B.C_NO
WHERE C_NAME IN ('YUANLIAO1','YUANLIAO2')
UNION ALL
SELECT 2 SORT_NO,B.C_NAME,'',CASE WHEN (SELECT QTY FROM #A WHERE C_NO=B.C_NO AND S_NO='B')/3>(SELECT QTY FROM #A WHERE C_NO=B.C_NO AND S_NO='C')/5
THEN ROUND((SELECT QTY FROM #A WHERE C_NO=B.C_NO AND S_NO='C')/5,0) ELSE ROUND(( SELECT QTY FROM #A WHERE C_NO=B.C_NO AND S_NO='B')/3,0) END
FROM #B B
WHERE C_NAME IN ('YUANLIAO1','YUANLIAO2'))A
ORDER BY C_NAME,SORT_NO

DROP TABLE #A,#B
jimoshatan 2008-10-31
  • 打赏
  • 举报
回复
/***
总感觉LZ给出的结果不正确,我按照我的理解做了一下***/
CREATE TABLE #A (S_NO VARCHAR(10),QTY VARCHAR(10),C_NO VARCHAR(10))
INSERT INTO #A SELECT 'A',20,1
INSERT INTO #A SELECT 'B',30,2
INSERT INTO #A SELECT 'B',40,3
INSERT INTO #A SELECT 'C',20,2
INSERT INTO #A SELECT 'C',50,3

CREATE TABLE #B (C_NO VARCHAR(10),C_NAME VARCHAR(10))
INSERT INTO #B SELECT 1,'CHENGPIN'
INSERT INTO #B SELECT 2,'YUANLIAO1'
INSERT INTO #B SELECT 3,'YUANLIAO2'
SELECT (CASE WHEN SORT_NO=1 THEN C_NAME ELSE C_NAME+'得到A的数量' END)C_NAME,S_NO,QTY
FROM
(SELECT 1 SORT_NO,B.C_NAME,A.S_NO,A.QTY
FROM #B B LEFT JOIN #A A ON A.C_NO=B.C_NO
WHERE C_NAME IN ('YUANLIAO1','YUANLIAO2')
UNION ALL
SELECT 2 SORT_NO,B.C_NAME,'',CASE WHEN (SELECT QTY FROM #A WHERE C_NO=B.C_NO AND S_NO='B')/3>(SELECT QTY FROM #A WHERE C_NO=B.C_NO AND S_NO='C')/5
THEN ROUND((SELECT QTY FROM #A WHERE C_NO=B.C_NO AND S_NO='C')/5,0) ELSE ROUND(( SELECT QTY FROM #A WHERE C_NO=B.C_NO AND S_NO='B')/3,0) END
FROM #B B
WHERE C_NAME IN ('YUANLIAO1','YUANLIAO2'))A
ORDER BY C_NAME,SORT_NO

DROP TABLE #A,#B
jimoshatan 2008-10-31
  • 打赏
  • 举报
回复
原料仓1 B 20
原料仓1 c 30
是不是数量写反了?
jaxio 2008-10-31
  • 打赏
  • 举报
回复
用语言来组织就是,产品和原料是分仓存放,产品有若干个原料B和C组成,先通过一个条件A,查询各个仓库中B和C的数量,以及能组成多少个A。
水族杰纶 2008-10-30
  • 打赏
  • 举报
回复
关注~~~~
Andy-W 2008-10-30
  • 打赏
  • 举报
回复
比较鳌头~~~~~~

nalnait 2008-10-30
  • 打赏
  • 举报
回复
dawugui 2008-10-30
  • 打赏
  • 举报
回复
成品B和C在A表中各有两个,取哪个?

看不懂,帮顶.
ChinaJiaBing 2008-10-30
  • 打赏
  • 举报
回复

接分.....
ChinaJiaBing 2008-10-30
  • 打赏
  • 举报
回复

接分.....
ChinaJiaBing 2008-10-30
  • 打赏
  • 举报
回复

接分.....
hyde100 2008-10-30
  • 打赏
  • 举报
回复
关注
viva369 2008-10-30
  • 打赏
  • 举报
回复
弄点测试数据,给出想要的结果格式
  • 打赏
  • 举报
回复
楼主还是把表的含义和数据之间关系描述的再清楚一点把

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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