51Testing软件测试论坛

标题: 一道数据库的笔试题目 [打印本页]

作者: cq_tester    时间: 2006-4-5 11:07
标题: 一道数据库的笔试题目
笔试的时候没做出来  -_-!!

有两个表

表一 AAA
种类mc        库存总量s1
A        997       
B        1234

表二         BBB
种类mc        出库数量s1
A        105
A        213
B        116
B        211
B        303
用一条SQL语句求出A,B各剩下多少?
作者: lq810425    时间: 2006-4-11 10:06
select a.mc,a.s1-b.q_out
from aaa a,(
select mc ,sum(s1) as q_out
from bb group by mc
)b
where a.mc=b.mc
作者: guai00    时间: 2006-4-11 16:00
谢了,学习了一招!
作者: 陆春红    时间: 2006-4-13 15:01
原帖由 lq810425 于 2006-4-11 10:06 发表
select a.mc,a.s1-b.q_out
from aaa a,(
select mc ,sum(s1) as q_out
from bb group by mc
)b
where a.mc=b.mc



看的不是很懂呢  a.s1-b.q_out是什么意思  
from aaa a,(
select mc ,sum(s1) as q_out
from bb group by mc
)b这个又是怎么生成的呢?
作者: yjshen    时间: 2006-4-14 21:49
select a.mc,a.s1-b.q_out
from AAA as a,(
select mc ,sum(s1) as q_out
from BBB group by mc
)as b
where a.mc=b.mc
这样写了是不是好理解点!


a.s1-b.q_out的意思是把库存减去出库!
作者: guolm1225    时间: 2006-4-15 19:12
看懂了
作者: caowenbin    时间: 2006-4-16 20:45
原帖由 yjshen 于 2006-4-14 21:49 发表
select a.mc,a.s1-b.q_out
from AAA as a,(
select mc ,sum(s1) as q_out
from BBB group by mc
)as b
where a.mc=b.mc
这样写了是不是好理解点!


a.s1-b.q_out的意思是把库存减去出库!

SQL语句有减的?
学到了
作者: yjshen    时间: 2006-4-17 22:10
有错误没有啊!!
我学SQL也就10多天,,有错误的希望提出来啊!!
哈哈!!!~~~
作者: walker_lai    时间: 2006-9-2 11:40
没错
作者: dandan    时间: 2006-9-2 11:54
非常正确
作者: Helen_px    时间: 2008-12-2 14:50
跟我写的一样
作者: luhn    时间: 2008-12-2 15:25
又学了一点
作者: m_r3326    时间: 2008-12-8 13:25
学习~~~~~ 高  !!!
作者: ruifengkeji    时间: 2008-12-13 15:08
yeah
作者: ruifengkeji    时间: 2008-12-13 15:09
,k
作者: navy2008    时间: 2008-12-29 14:20
学习了............................................
作者: 郁闷的萝卜    时间: 2009-1-5 15:22
SELECT aaa.种类mc,aaa.库存总量s1-ccc.出库总量 AS 剩余量
FROM aaa,(SELECT 种类mc,SUM(出库数量s1 ) 出库总量 FROM bbb
GROUP BY  种类mc ) AS ccc where aaa.种类mc=ccc.种类mc
作者: linxiaowen    时间: 2009-5-14 17:21
思路:
1.先求各商品出售的总数,由表BBB用GROUP BY 对mc进行分类并SUM求和统计
select sum(s1) as output from BBB group by mc
2.库存总数-出售的总数=剩余库存
3.由于是不是一张表,并且两张表有唯一关系mc ,可用"别名法"对两表关联起来.
AAA 命名为 a , 各商品出售的总数命名为 b(这个时候b已经 是第3个表了,不能用直接BBB命名为b)
4.用条件 表a的mc=表b的mc 约束起来
答案: 
select a.mc, a.s1-b.output
from AAA as a,(select mc ,sum(s1) as output from BBB group by mc) as b
where a.mc=b.mc

大家想想为什么这个是错误的
select a.mc,a.s1-(select sum(s1)from BBB group by mc)
from AAA as a,BBB as b
where a.mc=b.mc

[ 本帖最后由 linxiaowen 于 2009-5-14 17:25 编辑 ]




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2