基础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~


...全文
257 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
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
  • 打赏
  • 举报
回复
正常

34,838

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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