我有三个表
TN_PROCESS_PLANNING 工艺表
TN_DOCUMENTATION 文档
TN_LINK_01036 工艺和文档的链接表
TN_LINK_01036的OBJECT_ID1是文档对象
TN_LINK_01036的OBJECT_ID2是工艺对象下面这个sql语句在sqlserver中运行正常
UPDATE    TN_PROCESS_PLANNING
SET               STATE = TN_DOCUMENTATION.STATE, FILE_NAME = TN_DOCUMENTATION.FILE_NAME
FROM         TN_DOCUMENTATION INNER JOIN
                      TN_LINK_01036 ON 
                      TN_DOCUMENTATION.OBJECT_ID = TN_LINK_01036.OBJECT_ID1 INNER JOIN
                      TN_PROCESS_PLANNING ON 
                      TN_LINK_01036.OBJECT_ID2 = TN_PROCESS_PLANNING.OBJECT_ID
在oracle里运行报错:sql命令未正确结束弄了一下午,急啊,哪位大哥帮帮忙

解决方案 »

  1.   

    这个sql语句是把TN_PROCESS_PLANNING中的状态和文件名称属性更新为工艺所对应的文档的状态属性和文件名称属性的属性值
      

  2.   

    /--试一下,看是不是这个意思:UPDATE TN_PROCESS_PLANNING a,TN_DOCUMENTATION b,TN_LINK_01036 c,  
           SET  a.STATE = b.STATE,a.FILE_NAME = b.FILE_NAME 
           where b.OBJECT_ID = c.OBJECT_ID1 and 
                 c..OBJECT_ID2 = a.OBJECT_ID 
    ;
      

  3.   

    UPDATE TN_PROCESS_PLANNING a,TN_DOCUMENTATION b,TN_LINK_01036 c,  
           SET  a.STATE = b.STATE,a.FILE_NAME = b.FILE_NAME 
           where b.OBJECT_ID = c.OBJECT_ID1 and 
                 a.OBJECT_ID = c.OBJECT_ID2 

      

  4.   


    你的写法不对了当然提示错误了
    update 表  set 字段 where 条件
    update 表  set 字段=(select 字段 from 表 where 条件) where 条件
      

  5.   

    UPDATE TN_PROCESS_PLANNING a,TN_DOCUMENTATION b,TN_LINK_01036 c,  
          SET  a.STATE = b.STATE,a.FILE_NAME = b.FILE_NAME 
          where b.OBJECT_ID = c.OBJECT_ID1 and 
                c.OBJECT_ID2 = a.OBJECT_ID 

      

  6.   

    -- TRY IT ..
    -- 1ST WAY:  
    UPDATE TN_PROCESS_PLANNING
       SET (STATE, FILE_NAME) = (SELECT TN_DOCUMENTATION.STATE,
                                        TN_DOCUMENTATION.FILE_NAME
                                   FROM TN_DOCUMENTATION, TN_LINK_01036
                                  WHERE TN_DOCUMENTATION.OBJECT_ID =
                                        TN_LINK_01036.OBJECT_ID1
                                    AND TN_LINK_01036.OBJECT_ID2 =
                                        TN_PROCESS_PLANNING.OBJECT_ID)
     WHERE EXISTS
     (SELECT 1
              FROM TN_DOCUMENTATION, TN_LINK_01036
             WHERE TN_DOCUMENTATION.OBJECT_ID = TN_LINK_01036.OBJECT_ID1
               AND TN_LINK_01036.OBJECT_ID2 = TN_PROCESS_PLANNING.OBJECT_ID);-- 2ND WAY:
    UPDATE (SELECT TN_DOCUMENTATION.STATE        STATE_DO,
                   TN_DOCUMENTATION.FILE_NAME    FILE_NAME_DO,
                   TN_PROCESS_PLANNING.STATE     STATE_TN,
                   TN_PROCESS_PLANNING.FILE_NAME FILE_NAME_TN
              FROM TN_DOCUMENTATION, TN_LINK_01036, TN_PROCESS_PLANNING
             WHERE TN_DOCUMENTATION.OBJECT_ID = TN_LINK_01036.OBJECT_ID1
               AND TN_LINK_01036.OBJECT_ID2 = TN_PROCESS_PLANNING.OBJECT_ID)
       SET (STATE_TN, FILE_NAME_TN) = (STATE_DO, FILE_NAME_DO);