注册 登录
编程论坛 ASP技术论坛

做这个四个表的语句是什么的呢? 只有符合house和xiaofei这个两个表的数据都显示出来。

liaohongchu 发布于 2010-03-19 10:22, 395 次点击
sql="select b.*,a.house_no,a.house_id,a.house_s_id,c.jiaoxing_time,d.birthday_m,d.birthday_d from xiaofei b,house a,xiaofei_jiaoxing c,ka d where a.house_id=b.house_id and b.ruzhu_time is not null and b.id *=c.xiaofei_id and b.ka_no *=d.ka_no"
这条语句本来在SQL SERVER2000 可以显示数据出来的 。

但我换了SQL SERVER 2005的后 就显示不出来数据了。

我找到好像是这里的问题  b.id *=c.xiaofei_id and b.ka_no *=d.ka_no  

这里的
house和xiaofei这个两个表是有通过house_id联系的。

xiaofei和下面两表的联系要通过在预定房间的时间 选择相应或填写的时候在联系起来的
xiaofei_jiaoxing表    ka表

那么做这个四个表的语句是什么的呢? 只有符合house和xiaofei这个两个表的数据都显示出来。
本来sql="select b.*,a.house_no,a.house_id,a.house_s_id,c.jiaoxing_time,d.birthday_m,d.birthday_d from xiaofei b,house a,xiaofei_jiaoxing c,ka d where a.house_id=b.house_id and b.ruzhu_time is not null and b.id *=c.xiaofei_id and b.ka_no *=d.ka_no" 是实现了,但换了2005数据库就显示不出来数据了?为什么呢?
3 回复
#2
cnfarer2010-03-19 20:13
在from子句中用left outer join ...on 不要将连接条件放到到where子句!
#3
czyzhuo2010-03-24 12:33
SQL SERVER 2005的表连接和2000已经不一样了
select b.*,a.house_no,a.house_id,a.house_s_id,c.jiaoxing_time,d.birthday_m,d.birthday_d from xiaofei b,house a,xiaofei_jiaoxing c,ka d where a.house_id=b.house_id and b.ruzhu_time is not null and b.id *=c.xiaofei_id and b.ka_no *=d.ka_no
以上这种连接方法往后会被取消
以后要采用join 来进行连接表
#4
czyzhuo2010-03-24 12:40
    一般有全连接:full outer join
    左连接let join
    右连接right join
    内连接inner join

    (1) inner join:内部连接,两表都满足的组合
    (2) full outer join:全连接,两表相同的组合在一起,A表有,B表没有的数据显示为NULL,同样,B表有,A表没有的数据显示为NULL。    l
    (3) A表 left join  B表:左连,以A表为基础,A表的全部数据,B表有的组合。没有的为null
    (4) A表 right join B表:右连,以B表为基础,B表的全部数据,A表的有的组合。没有的为null


1