我有这样一个表:ID name1  age1  name2   age2   name3   age3  ...  
1   张三    18   李四  22     刘花    15   ...//这样的姓名+年龄的组合有10组左右
问题1:有什么简单的方法把它们组合起来:
name    age
张三     18
李四     22
刘花     15
......//问题2:如果我知道一个姓名,要判断它是否与该记录的某一个相符,如何实现?例如:只要名字是(张三,李四,刘花)中的某一个,返回true.谢谢!

解决方案 »

  1.   

    表设计的别扭
    ID name age
    1  张三 12
    1  李四 24
    1  刘花 15
    //把表改成这样不行吗?  或者把他们查出来 在dataSet中插成这样
      

  2.   

    select top 1 true from table where exist (select id from table where name = '张三')
      

  3.   

    select name1,age1 from  tablename
    union select name2,age2 from  tablename
    union select name3,age3 from  tablename
    union select name4,age4 from  tablename
    union select name5,age5 from  tablename
    ..........
      

  4.   

    create table tablename(name1 varchar(20),age1 int,
    name2 varchar(20),age2 int,
    name3 varchar(20),age3 int,
    name4 varchar(20),age4 int,
    name5 varchar(20),age5 int)
    insert into
    tablename
    select 'sss',12,'dff',13,'dfdf',14,'dfdgr',15,'dfdgrt',16select name1,age1 from  tablename
    union select name2 ,age2 from  tablename
    union select name3,age3 from  tablename
    union select name4,age4 from  tablename
    union select name5,age5 from  tablename
    drop table tablename
      

  5.   

    select * from 表名 where  (name1+name2+age2+name3) like  '%张三%'
      

  6.   

    首先谢谢:bjgzxx(食人一族)和其他热心帮助的朋友。
    //我给的这个表只是举例,其实我的用途是存放单据的签核流程。单据分单头和单身两个表,单头存放该单据的基本信息和对应签核者信息;单身存放单据的具体信息。
    //一个单据在单头表里对应一条记录,但一个单据需要若干部门的主管签核才能生效。每位主管可以签核(即修改对应的若干列的值,如:签核结果,签核意见,签核时间等),也可以查询经过他签核的单据。
    //如果有做过单据签核或工作流的朋友,希望能得到您的指点,或更有效的思路,谢谢!
      

  7.   

    1.假设表
    ID name1  age1  name2   age2   name3   age3  ...  
    1   张三    18   李四  22     刘花    15   ...
    命名为:lajiOne//这样的姓名+年龄的组合有10组左右
    问题1:有什么简单的方法把它们组合起来:
    name    age
    张三     18
    李四     22
    刘花     15表命名为:lajiTwoAnswer:
    1.
    SqlConnection sqlConn = new SqlConnection();
    string sqlQuery = "SELECT * FROM lajiOne";
    sqlConn.Open();
    SqlCommand sqlCommand =  new SqlCommand(sqlQuery,sqlConn);
    SqlDataReader sqlDataReader = sqlCommand.ExecuteNoQuery();int number = sqlDataReader.FieldCount;
    DataTabel dataTable = sqlDataReader.GetSchemaTable();string sqlInsert = "";
    for(int j=0;j<dataTable.Rows.Count;j++)
    {
      for(int i=0;i<number/2;i++)
       {
      sqlInsert += " INSERT INTO lajiTwo values(dataTable[j][i],dataTable[j][i+1]) ";   
       }
    }
    ...//execute sqlInsert.
    sqlConn.Close();
    sqlConn.Open();
    sqlCommand = new SqlCommand(sqlInser,sqlConn);;
    sqlCommand.ExecuteNoQuery();
    2.如果你硬是要从lajiOne表中查询public bool searchInfo(string strName)
    {

    SqlConnection sqlConn = new SqlConnection();
    string sqlQuery = "SELECT * FROM lajiOne";
    sqlConn.Open();
    SqlCommand sqlCommand =  new SqlCommand(sqlQuery,sqlConn);
    SqlDataReader sqlDataReader = sqlCommand.ExecuteNoQuery();int number = sqlDataReader.FieldCount;
    int j=0;while(sqlDataReader.Read())
    {
    if(j>= number) return false;


    if(sqlDataReader.GetString[j] == strName)
     {
        j = j+2;
         return true;
       }
    }
    }随手写的,没有测试。