MYSQL语句,创建一个试图。代码如下:
CREATE view vi_stat as 
select * from tbcontrol left join 
 (select T_Code, min(tbtask.T_AStart) as minstart,max(tbtask.T_AEnd)as maxend,sum(tbtask.T_PDay) as num from tbtask group by left(tbtask.T_Code, 8)) as b
 on tbcontrol.C_Code = left(b.T_Code,8)出现错误:
Error Code : 1349
View's SELECT contains a subquery in the FROM clause去掉CREATE view vi_stat as 后,查询结果是正确的,现在想建立视图,出现以上错误。

解决方案 »

  1.   

    视图定义服从下述限制:·         SELECT语句不能包含FROM子句中的子查询。·         SELECT语句不能引用系统或用户变量。·         SELECT语句不能引用预处理语句参数。·         在存储子程序内,定义不能引用子程序参数或局部变量。·         在定义中引用的表或视图必须存在。但是,创建了视图后,能够舍弃定义引用的表或视图。要想检查视图定义是否存在这类问题,可使用CHECK TABLE语句。·         在定义中不能引用TEMPORARY表,不能创建TEMPORARY视图。·         在视图定义中命名的表必须已存在。·         不能将触发程序与视图关联在一起。
      

  2.   

    http://dev.mysql.com/doc/refman/5.1/zh/views.html
      

  3.   

    View's SELECT contains a subquery in the FROM clause 语句包含子查询!!!学习来咯!
      

  4.   


    select 
    T_Code, 
    min(tbtask.T_AStart) as minstart,
    max(tbtask.T_AEnd)as maxend,
    sum(tbtask.T_PDay) as num 
     INTO #TB from tbtask 
    group by left(tbtask.T_Code, 8)) CREATE view vi_stat as 
    select * from tbcontrol left join 
    #TB as b 
    on tbcontrol.C_Code = left(b.T_Code,8) 试试看!!
      

  5.   


    CREATE VIEW vi_stat 
    AS
       SELECT 
           LEFT(T_Code,8) AS T_Code,
           min(tbtask.T_AStart) as minstart,
           max(tbtask.T_AEnd)as maxend,
           sum(tbtask.T_PDay) as num
       FROM tbtask
       GROUP BY LEFT(T_Code,8);然后再写SQLSELECT *
    FROM tbcontrol left join vi_stat AS B
     ON tbcontrol.C_Code = B.T_Code 
      

  6.   

    看看三楼的帖子http://dev.mysql.com/doc/refman/5.1/zh/views.html
      

  7.   

    liangCK的方法可以现在视图创建号了,我如何将视图中的数据更新到另一个表里关系是视图中的T_Code与表里的C_Code相同时,将视图中的3个数据更新到表的3个字段中
      

  8.   

    UPDATE tb AS A
         INNER JOIN vi_stat AS B
       ON A.T_Code=B.Code
    SET 
        A.`start` = B.minstart,
        A.`end` = B.maxend,
        A.num = B.num;
      

  9.   

    建议MYSQL的问题下次找MYSQL版问.这样会更快得到你的答案.