该视图的sql语句如下:SELECT     mb.MBID, m.MName, t.TName, c.CName, mb.SerialNum, mb.State, mb.DeliveryNum, CONVERT(varchar(100), mb.SendDate, 23) AS SendDate, CONVERT(varchar(100), 
                      mb.BackDate, 23) AS BackDate, mb.Re
FROM         dbo.MachineBroken AS mb INNER JOIN
                      dbo.Machine AS m ON mb.MBID = m.MID INNER JOIN
                      dbo.Type AS t ON m.TID = t.TID INNER JOIN
                      dbo.Class AS c ON t.CID = c.CID
WHERE     (mb.IsBack = 0)单独运行该视图的时候没有数据显示(表中所有数据的IsBack列值都为True,该列类型为bit),但从视图中获取数据时(运行“select * from View_MachineBrokenDetail”)却有数据显示,这是什么原因呢?

解决方案 »

  1.   

    表中所有数据的IsBack列值都为True还写了个(mb.IsBack = 0)能有数据吗,即使你都对也要是1呀
      

  2.   

    我这个视图就是选IsBack为0的数据,另外一个视图选IsBack为1的数据,这两个视图有不同用处,现在问题是我把select语句用到这两个视图上得到的数据是一样的,不知为何
      

  3.   

    数据主要从MachineBroken这个表中获取,目前我只输入了一条测试数据:
    ID   MBID    MID  SerialNum  State   IsBack  DeliveryNum  SentDate        BackDate   Re
    2      1      1   4443re     已送修  True    125441 2012/5/10 星期四  NULL      ffff其他两个表都只是根据关联编号获取名称而已,我就不列出来了,谢谢!
      

  4.   


    SELECT    
     mb.MBID, m.MName, t.TName, c.CName, mb.SerialNum, mb.State,
     mb.DeliveryNum, CONVERT(varchar(100), mb.SendDate, 23) AS SendDate, 
     CONVERT(varchar(100), 
                          mb.BackDate, 23) AS BackDate, mb.Re
    FROM         dbo.MachineBroken AS mb INNER JOIN
                          dbo.Machine AS m ON mb.MBID = m.MID 
                          INNER JOIN
                          dbo.Type AS t ON mb.TID = t.TID 
                          INNER JOIN
                          dbo.Class AS c ON mb.CID = c.CID
    WHERE     (mb.IsBack = 0)try
    感觉你的关联有问题,你还是一个表一个表的理清了吧
      

  5.   

    关联是没问题的,只不过where条件对上面的关联不起约束作用,我先从主表中筛选数据出来再作关联发现可以了create view View_MachineBrokenDetail 
    as
    SELECT   mb.MBID, m.MName, t.TName, c.CName, mb.SerialNum, mb.State, mb.DeliveryNum, CONVERT(varchar(100), mb.SendDate, 23) AS SendDate, CONVERT(varchar(100), 
                          mb.BackDate, 23) AS BackDate, mb.Re
    FROM     (select * from MachineBroken where IsBack=0) as mb,dbo.Machine m,dbo.Type t,dbo.Class c
    where     mb.MBID = m.MID 
              and m.TID = t.TID 
              and t.CID = c.CID
              and mb.IsBack=0