一个部门表,一个人员表,部门表其中有一个字段为管理人员,存放的是人员表中的人员代码(有多个代码),人员表中有人员代码)和人员名称两个段,求一个查询语句能将部门表中的管理人员代码替换成人员表中的人员名称。谢谢了。

解决方案 »

  1.   

    代理作业?UPDATE 。。 JOIN 。。SET 。。
      

  2.   

    表A
    a(代码)        b         c
    123、456        湖北             仙桃
    表B
    a(代码)             b(姓名)
    123                张三
    456         李四求一查询语句将表A中的a字段的代码替换成对应的B表中的姓名(显示结果如下)。张三、李四   湖北     仙桃      
      

  3.   

    如果 表A  只有一个人员
     update 表A  set a(代码)= (select b(姓名) from 表B  where 表B.a(代码)=表A.a(代码))如果 表A  有多人员。就要写一个函数getName  来返回 姓名列表
    然后用  update 表A  set a(代码)=getName (表A.a(代码))
    。CREATE OR REPLACE FUNCTION getName  (CID IN VARCHAR2) RETURN VARCHAR2
    IS
        RESULT VARCHAR2(2000);
        TYPE NAMETAB IS TABLE OF 表B.b(姓名)%TYPE;
        NAME1 NAMETAB;
        CURSOR GETSINGERNAME IS
            SELECT b(姓名)   FROM 表B
      WHERE  '%,'||CID|| ',%' LIKE '%,'||表B.a(代码)|| ',%'
     ;
    BEGIN
      OPEN GETSINGERNAME;
          FETCH GETSINGERNAME BULK COLLECT INTO NAME1;
      CLOSE GETSINGERNAME;
          FOR I IN 1..NAME1.COUNT LOOP
              RESULT := RESULT || NAME1(I)||',';
          END LOOP;
      RESULT := SUBSTR(RESULT,1,LENGTH(RESULT)-1);
      RETURN(RESULT);
    END;
    /
      

  4.   

    谢谢上面的朋友,我的意思不是要取姓名列表,然后往表A中增加,那些库里已存在了,我要的是一个能将A表中的多少人员代码替换成B表中对应的姓名的查询。
      

  5.   

    如果只有一个直接  select B.b,A.a,A.b where A.a=B.a就行了,如果有多个呢?
      

  6.   

    [url=http://v1.freep.cn/3tb_0907152307168yi2283050.jpg ][/url]