lean on什么风格:在SQL-SERVER2000中对同一个数据库多张表进行查询时怎样避免笛卡儿乘积???

来源:百度文库 编辑:高校问答 时间:2024/05/03 05:28:58

在写join类型的语句的时候,最好使用join来代替直接用“,”分隔多个表。这样必须提供on条件才能进行查询。当然,join的条件一定要设置好,否则也会出现笛卡尔积的。

比如tableA和TableB向关联的是ID字段

如果用“,“分隔两个表的话语据应该如下

select count(*)
from tableA ,TableB
where TableA.id=TableB.id

如果把where 语句漏掉就出现笛卡尔积了
select count(*)
from tableA ,TableB

同样,写成join的话,如果不指定on里的条件的话,语法是错的
select count(*)
from TableA join TableB
on TableA.id=TableB.id

但是如果再on里指定了一个错误的关联条件的话,也是会出现笛卡尔积的,比如:
select count(*)
from TableA join TableB
on 1=1

当然一般人不会闲得去把on条件设置成1=1,不过这是举个例子,就是为了说明on的筛选条件一定要设置好。

如果我没有弄错的话,你可以用视图来实现你的功能
无论怎么样用都是很好用的,而且对于笛卡儿乘积是能避免的,不知道说的对不对,楼下的给与评价

我建议你用视图去查询一下,它会提醒你建立两表之间的关联,而且一旦建立了关联了,一般是不出现,笛卡儿乘积的,另外要特别注意一些过滤条件,就行!