select kcb.课程ID,
km1.科目名称 as 科目1,
km2.科目名称 as 科目2,
km3.科目名称 as 科目3,
km4.科目名称 as 科目4,
km5.科目名称 as 科目5,
km6.科目名称 as 科目6,
km7.科目名称 as 科目7,
km8.科目名称 as 科目8,
km9.科目名称 as 科目9,
km10.科目名称 as 科目10 
from 课程表 kcb 
left join 科目表 km1 on kcb.科目1=km1.科目ID
left join 科目表 km2 on kcb.科目2=km2.科目ID
left join 科目表 km3 on kcb.科目3=km3.科目ID
left join 科目表 km4 on kcb.科目4=km4.科目ID
left join 科目表 km5 on kcb.科目5=km5.科目ID
left join 科目表 km6 on kcb.科目6=km6.科目ID
left join 科目表 km7 on kcb.科目7=km7.科目ID
left join 科目表 km8 on kcb.科目8=km8.科目ID
left join 科目表 km9 on kcb.科目9=km9.科目ID
left join 科目表 km10 on kcb.科目10=km10.科目ID
好象就是这样了吧

解决方案 »

  1.   

    DataGrid中有一个功能希望能够帮助你
    Select FirstField as '中文标题1',SecondField as '中文标题2' from aTable
    将这样的查询语句所查询到的数据与DataGrid绑定之后,在DataGrid就可以显示你需要的中文标题了
      

  2.   

    to houbinbin() 我想你还没有明白我的意思吧,麻烦你再看看我的要求好吗,谢谢!
      

  3.   

    你可以使用select之后就是把数据存到一个DataTable_KCB的表里面,
    那么表里面的结构就是
    ID,km1,km2,km3...km10,
    然后,修改DataTable_KCB里面的值;
    DataRow changeRow;
    for (i=0;i<dtSelect.Rows.Count;i++)
    {
      changeRow = DataTable_KCB.Rows[i];
      changeRow.BeginEdit();
      if (changeRow["km1"] = "XXX") changeRow["km1"]=YYY;
      if (changeRow["km2"] = "XXX") changeRow["km2"]=YYY;
      ...
      if (changeRow["km10"] = "XXX") changeRow["km10"]=YYY;
      changeRow.EndEdit();
    }
    XXX <-> YYY 的对应关系你必须在数据库里面获得,这个就不用说了。
     你是不是这个意思呢?
      

  4.   

    select 课程ID,专业ID,学期,b1.科目名称,b2.科目名称,……,b10.科目名称
    from   科目表 as a,课程表 as b1, 课程表 as b2,课程表 as as b3,...,课程表 as as b10
    where  a.科目ID=b1.科目1 and a.科目ID=b2.科目2,...,a.科目ID=b10.科目10
      

  5.   

    upto(阿球) :我那个SQL语句出现了什么问题呢?
      

  6.   

    参考了 LesleyChiu(鱼头) 的思路实现了,为了方便调试,我用“课程表”的“专业ID”映射到“专业表”的“(专业)名称”,结果可以,不过这样用DataTable会不会性能上损失很大~
    我感觉用单纯SQL语句的话会比较快,还要考虑到更新问题!
    下面我贴出代码,希望大家帮我想想有什么更好的方法,谢谢!private void Page_Load(object sender, System.EventArgs e)
    {
    DataTable dtCourse;
    DataRow drCourse;
    OleDbCommand cmd;
    String sql;
    OleDbDataReader reader; daCourse.Fill(dsCourse,"课程表");
    dtCourse = dsCourse.Tables["课程表"]; DataColumn myColumn = new DataColumn();
    myColumn.DataType = Type.GetType("System.String");
    myColumn.ColumnName = "专业";
    dtCourse.Columns.Add(myColumn);

    for(int i=0; i < dtCourse.Rows.Count; i++)
    {
    drCourse = dtCourse.Rows[i];
    drCourse.BeginEdit(); sql = "Select 名称 from 专业表 Where 专业ID=" + drCourse["专业ID"];
    cmd = new OleDbCommand(sql,cnScore);
    cnScore.Open();
    reader = cmd.ExecuteReader();
    reader.Read();
    drCourse["专业"] = reader.GetString(0);
    reader.Close();
    cnScore.Close();
    drCourse.EndEdit();
    }
    dvCourse = new DataView(dtCourse);
    dgCourse.DataSource = dvCourse;
    dgCourse.DataBind();
    }
      

  7.   

    select kcb.课程ID,
    km1.科目名称 as 科目1,
    km2.科目名称 as 科目2,
    km3.科目名称 as 科目3,
    km4.科目名称 as 科目4,
    km5.科目名称 as 科目5,
    km6.科目名称 as 科目6,
    km7.科目名称 as 科目7,
    km8.科目名称 as 科目8,
    km9.科目名称 as 科目9,
    km10.科目名称 as 科目10 
    from ((((((((((课程表 kcb 
    left join 科目表 km1 on kcb.科目1=km1.科目ID)
    left join 科目表 km2 on kcb.科目2=km2.科目ID)
    left join 科目表 km3 on kcb.科目3=km3.科目ID)
    left join 科目表 km4 on kcb.科目4=km4.科目ID)
    left join 科目表 km5 on kcb.科目5=km5.科目ID)
    left join 科目表 km6 on kcb.科目6=km6.科目ID)
    left join 科目表 km7 on kcb.科目7=km7.科目ID)
    left join 科目表 km8 on kcb.科目8=km8.科目ID)
    left join 科目表 km9 on kcb.科目9=km9.科目ID)
    left join 科目表 km10 on kcb.科目10=km10.科目ID)呵呵,再试试
      

  8.   

    to wd_318(初学者.net)语法错误 (操作符丢失) 在查询表达式 'kcb.科目1 = km1.科目ID LEFT OUTER JOIN 科目表 km2 ON kcb.科目2 = km2.科目ID LEFT OUTER JOIN 科目表 km3 ON kcb.科目3 = km3.科目ID LEFT OUTER JOIN 科目表 km4 ON kcb.科目4 = km4.科目ID LEFT OUTER JOIN 科目表 km5 ON kcb.科目5 = km5.科目ID LEFT OUTER JOIN 科目表 km6 ON kcb.科目6 = km6.科目ID LEFT O' 中。
      

  9.   

    你加括号了吗?我原来在SQL SERVER下好象不用加,刚才我在ACCESS下试了试,不加会出错,加上好象没问题的呀?
      

  10.   

    to wd_318(初学者.net)
    你能不能把可运行的源码发到我我邮箱,包括mdb,麻烦你了,
    我想快点结贴:)
      

  11.   

    测试通过!
    太谢谢你了! wd_318(初学者.net)