比如有一个表 TMP_USER, 字段有 TIMESTAMP, USERMAC, USERIP, USERLOGINTIME...
怎么得到查询的结果的表头用中文显示呢?我知道可以取别名
select timestamp 时间, usermac 用户MAC ... from tmp_user;但字段太多了, 怎么用 tmp_user, user_col_comments 两个表联合查询写一个简便一点的SQL呢 ?

解决方案 »

  1.   

    select *from user_col_comments
    union all
    select * from tmp_user where xxxxxxx
      

  2.   

    这两表的结构完全不一样,你拿来就union肯定不成。
      

  3.   

    创建视图,一劳永逸:
    create view TABLE_CHINESE as 
    select a.timestamp 时间, a.usermac 用户MAC ... tmp_user a, user_col_comments b 
    where a.field = b.field and ……;
    不知道是不是和你意思一致……
      

  4.   

    然后需要查询的时候直接查询视图就可以了:
    select * from TABLE_CHINESE;
      

  5.   


    额... 不能这样吧!tmp_user 表结构是timestamp    usermac   ...
    ---------------------------
    2011/09/21   00:2A:34:EF:5F:0B
    2011/09/22   00:2A:34:EF:5F:0A
    ...
    user_col_comments 的是table_name    column    comments   ...
    --------------------------------------
    tmp_user      timestamp  时间
    tmp_user      usermac    用户MAC
    ...
      

  6.   

    --写个函数
    CREATE OR REPLACE FUNCTION getSql(i_tableName VARCHAR2) RETURN VARCHAR2 IS
      v_sqlStr VARCHAR2(2000);
    BEGIN
      FOR c IN (SELECT *
                  FROM user_col_comments t
                 WHERE t.table_name = upper(i_tableName)) LOOP
      
        v_sqlStr := v_sqlStr || c.column_name || ' ' ||
                    c.comments || ',';
      END LOOP;
      v_sqlStr := 'select ' || rtrim(v_sqlStr, ',') || ' from ' || i_tableName;
      RETURN v_sqlStr;
    END;
    /