SQL多条件查询问题

求教SQL高手,在线急等……..tab1namejm张三zs李四ls王五wwTab2Wpcode剪刀001尺子002铅笔003橡皮004胶水005Tab3Namecode... 求教SQL高手,在线急等……..
tab1
name jm
张三 zs
李四 ls
王五 ww

Tab2
Wp code
剪刀 001
尺子 002
铅笔 003
橡皮 004
胶水 005

Tab3
Name code num time
张三 001 15 2012-1-1 09:15:36
李四 001 21 2012-1-1 10:12:15
王五 002 11 2012-1-2 17:15:36
张三 001 12 2012-1-2 12:15:36
李四 005 10 2012-1-3 15:15:36
王五 004 9 2012-1-4 16:15:36
张三 003 6 2012-1-6 09:15:36
王五 002 12 2012-1-7 08:15:36
王五 001 20 2012-1-7 16:15:36
李四 003 25 2012-1-8 19:15:36

数据库的三张表,如果我现在想统计2012年1月1日9点至2012年1月7日15点,五种物品同时被谁领取了多少(同一个人自动求和),这样的SQL语句该怎么写?
结果应该是:
(以剪刀为例)
张三 剪刀 27
李四 剪刀 21
王五 尺子 23
张三 铅笔 6
李四 铅笔 25
王五 橡皮 9
李四 胶水 10
展开
 我来答
longrenyingdc8ecb1
推荐于2016-06-04 · TA获得超过1万个赞
知道大有可为答主
回答量:6032
采纳率:82%
帮助的人:2375万
展开全部
第一张表没什么用,因为最后的结果没有用到。
有两种方式
(1)先关联后分组(不知道你是什么数据库,所以就大概写写,给个思路)
select tab3.name,tab2.wp,sum(tab3.num) from tab2,tab3 where tab2.code=tab3.code and tab3.time<时间大节点 and tab3.time>时间小节点(2012年1月1日9点) group by tab2.wp,tab3.name
(2) 先分组后关联
select a.name,tab2.wp,a.num from (select name,code,sum(num) num from tab3 group by name,code) a,tab2 where tab2.code=a.code
追问
如果我只查尺子和铅笔呢?数据库有O的还有SQL的
追答
只查尺子和铅笔,也是一样的
(1) 在where 后面加上一个tab2.wp in (‘尺子','铅笔')
(2)也是一样的也是在where后面加tab2.wp in (‘尺子','铅笔'),或者也可以写为
(select code from tab2 where wp in (‘尺子','铅笔')) b where a.code=b .code
另外原来的(2)第一个子查询忘记限制时间了,如果用的话别忘了加上
不过这种情况下,(1)比(2)好一点。
神崎橙
2015-07-04 · TA获得超过251个赞
知道小有建树答主
回答量:593
采纳率:0%
帮助的人:341万
展开全部
select tb3.name,tb2.Wp,sum(tb3.num)
from tb3

inner join tb2 on tb3.code=tb2.code

where time >= '2012-01-01 09:00:00' and time < '2012-01-07 15:00:00'

group by tb3.name,tb2.Wp
更多追问追答
追问
如果不是全部的物品呢?
追答
什么叫不是全部的物品?这个举例子说下?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式