两个表A,B
A表
id  name  sex
1   张三   1
2   李四   2
3   赵武  nullB表
s_id  s_name
  1     男
  2     女创建视图C,
select A.*,B.s_name from A left join B on A.sex=B.s_id
得到视图数据:
id  name  sex     s_name
1   张三   1         男
2   李四   2         女
3   赵武  null       null
问题是

在mssql2000中,通过asp调用, select * from C 可以得到所有的数据在mssql2005中,通过asp调用, select * from C 只能得到前两行的数据纠结一天了,这是什么原因呢?

解决方案 »

  1.   

    你在查询分析器和ssms里面分别执行,数据是一样的吗?
      

  2.   

    只在ssms中看到的,在2000中的查询分析器里面可以看到同样的数据!
      

  3.   

    分别在2000和05的查询分析器里面结果如果一样的话
    那说明是你程序绑定的的时候出问题了,asp的问题
      

  4.   

    也可以用ssms连到2000的实例和2005的实例,执行同样的查询,我刚才的意思就其实就是让你在不同实例看看是不是一样的,如果查询一样,那就是asp做了处理。
      

  5.   

    asp 里面只有一个语句,就是select * from C
    没有加任何条件
      

  6.   

    难道你2005那里设置了对null值做处理?
      

  7.   

    我的是08R2,估计是你2005改动了什么
     CREATE TABLE A (id INT, NAME VARCHAR(10), sex int )
     INSERT INTO A select '1', '张三', '1'
           union all select '2', '李四', '2'
           union all select '3', '赵武', NULL
           
           CREATE TABLE B(s_id INT, s_name VARCHAR(10))
           INSERT INTO B
           select  1, '男'
           UNION ALL 
           SELECT   2, '女'
     select A.*,B.s_name from A left join B on A.sex=B.s_id
     /*
     id          NAME       sex         s_name
     ----------- ---------- ----------- ----------
     1           张三         1           男
     2           李四         2           女
     3           赵武         NULL        NULL
     
     (3 行受影响)
     
     */