我创建了个视图如
create view YaoPzd
as
select stock.id,materia.leechdomName,stock.leechdomNamea,materia.spec,materia.leechdomID,materia.genre,stock.casing,stock.consiqnment,materia.alarm from stock,materia
go查询出来的数据,字段里的值有些就是重复的,为什么会这样

解决方案 »

  1.   

     (不要高估你的汉语表达能力或者我的汉语理解能力)
       建议你列出你的表结构,并提供测试数据以及基于这些测试数据的所对应正确结果。
       参考一下这个贴子的提问方式http://topic.csdn.net/u/20091130/20/8343ee6a-417c-4c2d-9415-fa46604a00cf.html
       
       1. 你的 create table xxx .. 语句
       2. 你的 insert into xxx ... 语句
       3. 结果是什么样,(并给以简单的算法描述)
       4. 你用的数据库名称和版本(经常有人在MS SQL server版问 MySQL)
       
       这样想帮你的人可以直接搭建和你相同的环境,并在给出方案前进行测试,避免文字描述理解上的误差。   
      

  2.   

    select stock.id,materia.leechdomName,stock.leechdomNamea,materia.spec,materia.leechdomID,materia.genre,stock.casing,stock.consiqnment,materia.alarm from stock,materia你需要加上where条件  否则  是笛卡尔积
      

  3.   

    加上where,两表关联的条件stock.XXXX = materia.XXXX
      

  4.   

    create view YaoPzd
    as
    select stock.id,materia.leechdomName,stock.leechdomNamea,materia.spec,materia.leechdomID,materia.genre,stock.casing,stock.consiqnment,materia.alarm from stock,materia
    where  stock.id=materia.id--两个表的关联字段

    select stock.id,materia.leechdomName,stock.leechdomNamea,materia.spec,materia.leechdomID,materia.genre,stock.casing,stock.consiqnment,materia.alarm from stock inner join materia on stock.id=materia.id
    go
      

  5.   

    重复值的原因一般就是连接的过程中连接条件出问题或者where语句有问题,所以最好检查一下,并且建议你从简单的表开始关联,不要一次性关联太多表,会使逻辑复杂
      

  6.   


    stock.id,materia.leechdomName,stock.leechdomNamea,materia.spec,materia.leechdomID,materia.genre,stock.casing,stock.consiqnment,materia.alarm from stock,materia没有任何连接条件的from子句,相当于笛卡尔积,即两个表行数的乘积。
    stock有n行,materia有m行,结果就为n*m行,但是如果你stock表和materia表本身无重复数据,连接出来的也没有重复数据,只是对于stock来说,关于materia的部分会重复m次