这样的sql怎么写

marswgj 2009-09-30 05:00:30
我有2张表,一张是明细表,另一张是字典表,例如下:
表a:

字段1 字段2
a 1
a 2
b 1
c 3

表b:
字段1 字段2
a 中国
b 美国
c 英国
d 法国

我怎么写sql,能生成下面的结果

字段1 字段2
中国 2个
美国 1个
英国 1个
法国 0个

我也写的一些,但是由于明细中没有法国,所以查询结果没有法国。如果要把法国也显示出来,怎么写呀?
...全文
129 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
hock57 2009-10-02
  • 打赏
  • 举报
回复
select 表b.字段2 sum(表a.字段1) from (
select * from 表a right join 表b on(表a.字段1 = 表b.字段2))
group by 表b.字段2
小灰狼W 2009-10-01
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 marswgj 的回复:]
还有个问题。我先在a表变成这个样子了:
表a:

字段1  字段2  字段3
a      1      0
a      2      0
b      1      1
c      3      1

如果按照上面这样写,就达不到预期的效果:

select b.字段2,count(a.字段2)字段2
  from a,b
where a.字段1(+)=b.字段1 and a.字段3='1'
group by b.字段2

这个是怎么回事?
[/Quote]
select b.字段2,count(a.字段2)字段2
from a right join b
on a.字段1=b.字段1 and a.字段3='1'
group by b.字段2
是这个效果吗
marswgj 2009-09-30
  • 打赏
  • 举报
回复
还有个问题。我先在a表变成这个样子了:
表a:

字段1 字段2 字段3
a 1 0
a 2 0
b 1 1
c 3 1

如果按照上面这样写,就达不到预期的效果:

select b.字段2,count(a.字段2)字段2
from a,b
where a.字段1(+)=b.字段1 and a.字段3='1'
group by b.字段2

这个是怎么回事?
shigaoyixiong 2009-09-30
  • 打赏
  • 举报
回复
嗯嗯
amiksong 2009-09-30
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 wildwave 的回复:]
select b.字段2,count(a.字段2)字段2
  from a,b
where a.字段1(+)=b.字段1
group by b.字段2
[/Quote]

正解
shiyiwan 2009-09-30
  • 打赏
  • 举报
回复
才发现我写反了,呵呵

而且应该是求count

忽略#1,

#3是对的
小灰狼W 2009-09-30
  • 打赏
  • 举报
回复
select b.字段2,count(a.字段2)字段2
from a,b
where a.字段1(+)=b.字段1
group by b.字段2
shiyiwan 2009-09-30
  • 打赏
  • 举报
回复
举例数据里面是否有错误啊,需要求和吗?
shiyiwan 2009-09-30
  • 打赏
  • 举报
回复
用左连接做可以的

select a.字段1,nvl(b.字段2,0) from a, b where a.col1 = b.col1(+);

17,089

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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