基础SQL:分组及连接

Xzoth 2008-04-03 04:39:51
有表如下:
product商品
————————————————
name price
果汁 4
自行车 450
手机 2600

discount折扣
----------------
name money
手机 500
自行车 28

product商品表 记录了商品名称和价格
discount折扣表 记录了折扣的商品和折扣了多少钱


我要用一个查询查出所有商品折扣后的价格列表
select a.[name] 商品, sum(a.[price]-b.[money]) 价格 from product as a
left outer join discount as b on a.[name]=b.[name]
group by a.[name]
这样查出来的结果是:
----------------
商品 价格
果汁 NULL
手机 2100
自行车 422

果汁是空的, SOS~


...全文
190 点赞 收藏 10
写回复
10 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
dawugui 2008-04-03
左连接,没有则为0.

product有果汁
discount没有果汁
所以针对果汁,b.[money]=0
回复
Xzoth 2008-04-03
最终结果:
----------------
商品 价格
果汁 4
手机 2100
自行车 422
回复
laowan688 2008-04-03
left outer join discount 当然是空了
回复
Xzoth 2008-04-03
我想要的结果是 所有商品 经过折扣后的价格列表:

----------------
商品 价格
果汁 NULL
手机 2100
自行车 422


6楼可以了,能说明一下原理吗?
回复
sweetweiwei 2008-04-03
select a.[name] 商品,
sum(a.[price]-isnull(b.[money],0))价格
from product as a
left outer join discount as b on a.[name]=b.[name]
group by a.[name]
回复
pt1314917 2008-04-03

select a.[name] 商品, sum(inull(a.[price],0)-isnull(b.[money],0)) 价格 from product a
left join discount b on a.[name]=b.[name]
group by a.[name]
回复
dawugui 2008-04-03
select a.[name] 商品, isnull(sum(a.[price]-b.[money]),0) 价格 from product as  a 
left outer join discount as b on a.[name]=b.[name]
group by a.[name]
回复
pt1314917 2008-04-03
想要的结果是?
回复
liangCK 2008-04-03
你想怎样?

用isnull函数
回复
liangCK 2008-04-03
正常
回复
相关推荐
发帖
MS-SQL Server
创建于2007-09-28

3.3w+

社区成员

MS-SQL Server相关内容讨论专区
申请成为版主
帖子事件
创建了帖子
2008-04-03 04:39
社区公告
暂无公告