TSort
SortID,SortNameSortGroups
GroupsID,GroupsNameNewsList
NewsID,SortID,GroupsID,NewsTitle现在想实现的效果是提取SortGroups的的每个分类下的前8篇文章,就是传入一个GroupsID,提取每个分类下的8篇文章实现的效果像<SortGroups GroupsID="SC00000002" GroupsName="A">
  <TSort SortID='0001' SortName="测试一">
     <Novel NovelID="N00000000064" NTypeID="0001" GroupsID="SC00000002" NTitle="爱玛" />
     <Novel NovelID="N00000000061" NTypeID="0001" GroupsID="SC00000002" NTitle="傲慢与偏见"/>
     <Novel NovelID="N00000000053" NTypeID="0001" GroupsID="SC00000002" NTitle="安娜.卡列宁娜"/>
     <Novel NovelID="N00000000052" NTypeID="0001" GroupsID="SC00000002" NTitle="阿甘正传"" />
  </TSort>
  <TSort SortID='0002' SortName="测试二">
     <Novel NovelID="N00000000064" NTypeID="0002" GroupsID="SC00000002" NTitle="爱玛" />
     <Novel NovelID="N00000000061" NTypeID="0002" GroupsID="SC00000002" NTitle="傲慢与偏见"/>
     <Novel NovelID="N00000000053" NTypeID="0002" GroupsID="SC00000002" NTitle="安娜.卡列宁娜"/>
     <Novel NovelID="N00000000052" NTypeID="0002" GroupsID="SC00000002" NTitle="阿甘正传"" />
  </TSort>
</SortGroups>

解决方案 »

  1.   

    看不出你的表中什么关系。不过传入一个GroupsID 那怎么取多个分类下的记录呢?你的HTML输出到是可以实现。。你可以select top 8 * from NewsList where GroupsID='';也可以分组 select top 8 * from NewsList group by GroupsID然后循环输出htmlDEMO
     //mock下数据brand  category
                DataTable dtOne = new DataTable();
                dtOne.Columns.Add("brandid", typeof(string));
                dtOne.Columns.Add("brandname", typeof(string));            DataTable dtTwo = new DataTable();
                dtTwo.Columns.Add("brandid", typeof(string));
                dtTwo.Columns.Add("brandname", typeof(string));
                dtTwo.Columns.Add("categoryid", typeof(string));
                dtTwo.Columns.Add("categoryname", typeof(string));            //添加数据            for (int i = 1; i < 10; i++)
                {
                    DataRow dr = dtOne.NewRow();
                    dr[0] = i.ToString();
                    dr[1] = "大分类" + i;
                    dtOne.Rows.Add(dr);
                }
                //添加数据            for (int j = 1; j < 10; j++)
                {
                    DataRow dr1 = dtTwo.NewRow();
                    dr1[0] = j.ToString();
                    dr1[1] = "大分类" + j;
                    dr1[2] = "a" + j;
                    dr1[3] = "小分类" + j.ToString() + j.ToString();
                    dtTwo.Rows.Add(dr1);
                }
               
                foreach (DataRow d1 in dtOne.Rows)
                {
                    strmenu += d1["brandname"].ToString() + "<br/>";
                    DataRow[] drsChild = dtTwo.Select("brandid=" + d1["brandid"] + "");
                    DataTable ChildDataTable = drsChild[0].Table.Clone();
                    foreach (DataRow drs in drsChild)
                    {
                        ChildDataTable.ImportRow(drs);
                    }
                    if (ChildDataTable.Rows.Count != 0)
                    {
                        for (int k = 0; k <= ChildDataTable.Rows.Count - 1; k++)
                        {
                            strmenu += "&nbsp;" + ChildDataTable.Rows[k]["categoryname"].ToString() + "<br/>";
                        }
                    }
                }
            
    前台
    <%=strmenu  %>
      

  2.   

    谢谢wxr0323,前面几个帖子都是您帮了我,谢谢先我原先也考虑过用你这个方法,问题是如果用select top 8 * from NewsList where GroupsID='';的,我没办法判断每个分类下(SortID)的文章要提取几条是否可以提取每个分类下的前8条记录,再判断NewsList 下的Groupsid
      

  3.   

    其实我设计表的时候TSort 是大分类,NewsGroups是TSort下的分组信息,比如每个分类的文章都有  快报,常识,导读,其他   这些分类,我总不能在TSort的每条记录下都加上   快报,常识,导读,其他 这些分类,那就形成了冗余了
      

  4.   

    觉得
    TSort
    SortID,SortNameSortGroups
    GroupsID,GroupsName这两张表应该有关联类似TSort
    SortID,SortNameSortGroups
    GroupsID,GroupsName,SortID这样判断的时候就好判断了啊select top 8 * from SortGroups a  left join TSort b where a.GroupsID='xxxx'  group by b.SortID 
      

  5.   

    我现在的需求是提取分组信息 常识 类别下的文章,进行循环,手表常识
    欧米茄常识
    文章1~N    劳力士常识   
    文章1~N 浪琴常识
    文章1~N 上面是打一个比方
      

  6.   

    http://topic.csdn.net/u/20090220/12/5e41b936-0828-4f1f-95b5-d05caf819588.html