1.子查询
select t1.U_ID as 编号,t1.U_Username as 姓名,
性别=(select t2.v_value from user_value t2 where t2.U_ID=t1.U_ID and t2.V_Name='性别'),
年龄=(select t2.v_value from user_value t2 where t2.U_ID=t1.U_ID and t2.V_Name='年龄'),
Email=(select t2.v_value from user_value t2 where t2.U_ID=t1.U_ID and t2.V_Name='Email')from users t1
-------------------------------------

解决方案 »

  1.   

    谢谢,我试试看!其实v_name这些还有一张表对应,有个v_id
      

  2.   

    Create Or Replace View View_Name
    As
    Select A.U_Id,U_UserName,V_Name, V_Value
    From Users A,User_Value B
    Where A.u_Id=B.U_ID
      

  3.   

    to mycode:
    你这样没有用的,没有把表2的行转成列。
      

  4.   

    select U_ID as 编号, U_Username as 姓名,'' as 性别,0 as 年龄,'' as Email
     into temp_table from usersupdate temp_table 
       set 性别=(case when User_Value.V_Name='性别' then User_Value.V_Value
    ),年龄=(case when User_Value.V_Name='年龄' then User_Value.V_Value
    ),Email=(case when User_Value.V_Name='Email' then User_Value.V_Value
    ) from User_Value where temp_table.编号=User_Value.U_IDselect * from temp_table
      

  5.   


    select a._UID, a.U_Username , b.V_Value , c.V_Value , d.V_Value from Users a , User_Value b , User_Value c , User_Value d where 
     a.U_ID = b.U_ID and b.V_name = '性别' and
     a.U_ID = c.U_ID and c.V_name = '年龄' and
     a.U_ID = d.U_ID and d.V_name = 'EMail' 这样应该可以,不知道有没有更好的方法。
      

  6.   

    楼上的朋友,这种方法完全可行,如果用游标依次取出User_value中子段V_Value中的数据
    select distinct b.v_name from users a, user_value b where a.v_id = b.v_id;
    那在语句中就不用写死了。不知可否行得通?只是想法,还没实现。
      

  7.   

    嗯,方法完全可行的。 但是我现在的'性别'、'年龄'、'EMail' 等信息实际上是存放在其他表(假设是表X)中的,USER_VALUE表中只是用ID,是否有办法把变量表信息从表X中全部读出,然后再进行查询? 这样如果表X进行了修改,结果马上就能体现出来。
      

  8.   

    好办,你可以蒋user_value表与X表联结即可.
    select t1.U_ID as 编号,t1.U_Username as 姓名,
    性别=(select t2.v_value from (select u.v_value from x,user_value u where x.u_id=u.u_id) t2 where t2.U_ID=t1.U_ID and t2.V_Name='性别'),
    年龄=(select t2.v_value from (select u.v_value from x,user_value u where x.u_id=u.u_id) t2 where t2.U_ID=t1.U_ID and t2.V_Name='年龄'),
    Email=(select t2.v_value from (select u.v_value from x,user_value u where x.u_id=u.u_id) t2 where t2.U_ID=t1.U_ID and t2.V_Name='Email')from users t1
    另外
    若你你的user_value标仅仅有id或仅仅用id的话,而且user_value也有u_id的话,那么user_value表就不要用了,用X就行了
      

  9.   

    你的要求可以用access中交叉表查询(crosstable query)实现,而且特别方便.