Chinaunix首页 | 论坛 | 博客
  • 博客访问: 772071
  • 博文数量: 265
  • 博客积分: 6010
  • 博客等级: 准将
  • 技术积分: 1985
  • 用 户 组: 普通用户
  • 注册时间: 2009-07-13 12:33
文章分类

全部博文(265)

文章存档

2011年(1)

2010年(66)

2009年(198)

我的朋友

分类:

2009-07-13 16:00:43

LEFT JOIN 和 RIGHT JOIN 运算

用于 FROM 子句时,把源表记录组合起来。
语法

FROM表1 [ LEFT | RIGHT ] JOIN表2
    ON 表1.字段1 compopr 表2. 字段2

LEFT JOIN 及 RIGHT JOIN 运算可分为以下几个部分:部分 说明
table1, table2 记录被组合的表的名称。
field1, field2 被联接的字段的名称。且这些字段必须有相同的数据类型及包含相同类型的数据,但它们不需要有相同的名称。
compopr 任何的关系比较运算子:"=," "<," ">," "<=," ">=," 或 "<>."

----------------------------------------------------------------------------------------------

SELECT * FROM A LEFT JOIN B ON A.ID=B.ID WHERE B.OTHERKEY=XXXX

SELECT * FROM A LEFT JOIN B ON A.ID=B.ID AND B.OTHERKEY=XXXX
是不一样的

后者相当于
SELECT * FROM A LEFT JOIN B ON A.ID=B.ID WHERE B.OTHERKEY=XXXX OR B.OTHERKEY IS NULL

----------------------------------------------------------------------------------------------

select x.班级,x.课程,round(cast(isnull(y.tot2,0) as numeric)/x.tot1*100,2) from
(
select a.班级,b.课程,count(*) as tot1 from 学生表 a
inner join 成绩表 b on a.学号=b.学号
group by a.班级,b.课程
) x
left join
(
select a.班级,b.课程,count(*) as tot2 from 学生表 a
inner join 成绩表 b on a.学号=b.学号
where b.成绩 between 80 and 100
group by a.班级,b.课程
) y
on x.班级=y.班级 and x.课程=y.课程


刚才没测试,改了一点

----------------------------------------------------------------------------------------------

左右连接问题。

在sql server的连接语句如:

select a.id,b.yueshj from jh_wh_xiangmu as a left join jh_lr_zongliang as b on a.id=b.xiangmid

在oracle中应改为:

Select a.id, b.yueshj from jh_wh_xiangmu a, jh_lr_zongliang b where a.id=b.xiangmid(+);

在sql server的连接语句如:

select a.id,b.yueshj from jh_wh_xiangmu as a left join jh_lr_zongliang as b on trim(a.id)=trim(b.xiangmid)

在oracle中应改为:

Select a.id, b.yueshj from jh_wh_xiangmu a, jh_lr_zongliang b where trim(a.id)=trim(b.xiangmid(+))

----------------------------------------------------------------------------------------------

如果以上的都是正确的,on里面的是x和y之间关系的,where里面的条件是x或者y单独的条件,是这么理解么?

阅读(1273) | 评论(0) | 转发(0) |
0

上一篇:没有了

下一篇:什么是启发式

给主人留下些什么吧!~~