小弟做了一个电影网站,页面上要按分类列出电影,每个分类列出5部电影,第一部的图片和名字在左边列出来,后面4部的名字列在右边就行了,这样做其实也不难.
先查出所有分类的名字,然后循环出来,再嵌套查询top5每个分类的电影。这不是我想要的结果,我想一个SQL语句查出所有分类的前5部电影(select top 5 from 电影库 group by 分类 order by addtime desc),然后一次按格式列出分类名(就是不用数据集嵌套,不用再根据分类查询一次数据库了),第一部的图片和名字在左边列出来,后面4部的名字列在右边
下面给个图片的链接http://www.swsky.cn/tmp/movie.jpg,就是要这样的格式,不知道如何实现?有哪位大哥做过?

解决方案 »

  1.   

    取出每个分类前五条记录的sql语句SQL2000的写法二:
    select a.questionid,a.categoryid
    from dbo.QA_Questions a
    where Questionid in (select top 5 Questionid from QA_Questions where categoryid=a.categoryid 
    order by Questionid desc)order by a.categoryid ascSQL2005的写法:WITH NewTable AS(
    SELECT *,RANK() OVER(PARTITION BY  CategoryId Order BY  QuestionId) RANK
     FROM  QA_Questions)
    SELECT * FROM NewTable
    WHERE RANK < 6
    要取图片,具体看你的图片表和你的电影表是怎么关联的,取电影的时候同时取图片,然后前台在for循环里面用拼字符串的方法把要显示的样式和数据显示出来,例如
     for (int i=0;i<dt.Rows.Count ; i++)
        {
            string HTML;
            HTML +="";
            ...
        }
      

  2.   

    sql语句里面的表名和列名自己替换,应该行吧?
      

  3.   

    to:ayooxi(小毛*NiKi)
    我的电影名称、电影图片、电影分类ID在一个表中,
    电影分类名称在电影分类表中通过ID号跟电影表中的电影分类ID关联
    取出前五个电影不难,就是后面的步骤。
    我用C#做的前台页面,用repeater做的显示控件。按你的说法,我定义个public string HTML
    在后台做拼接后在前台代入?
    不能用什么控件直接做到吗?
      

  4.   

    strSQL = "select * from (select a.id,a.m_kid,a.m_name,a.m_poster,rank() over (partition by a.m_kid order by a.id desc) rank,b.k_name from sw_movies a left join sw_m_kind b on b.id=a.m_kid ) m where m.rank<7";
            objConn = new SqlConnection(ConfigurationManager.AppSettings["SqlConnStr"]);
            myCommand = new SqlDataAdapter(strSQL, objConn);
            objDataset = new DataSet();
            myCommand.Fill(objDataset, "sw_movies");
            int RecordCount = 0;
            RecordCount = objDataset.Tables[0].Rows.Count;
            for (int i = 0; i < RecordCount; i++)
            {
                if (Convert.ToInt32(objDataset.Tables[0].Rows[i]["rank"]) == 1)
                {
                    if (i == 0)
                    {
                        kindhtml = kindhtml + "<div id=\"Layer1\"><ol style=\"float: left; margin-left: 0px; width: 236px; background-color: #f7f3f7\">";
                        kindhtml = kindhtml + "<li class=ico><img height=\"11\" src=\"images/smv/bbs_icon.gif\" width=\"8\" /> <a href=\"list.aspx?id=" + objDataset.Tables[0].Rows[i]["m_kid"] + "\">" + objDataset.Tables[0].Rows[i]["k_name"] + "</a> </li><li class=classtxt><a href=\"list.aspx?id=" + objDataset.Tables[0].Rows[i]["m_kid"] + "\"><img height=\"11\" src=\"images/smv/bbs_more.gif\" width=\"45\" border=\"0\" /></a></li></ol>";
                        kindhtml = kindhtml + "<ol class=classpic><li><a href=\"view.aspx?id=" + objDataset.Tables[0].Rows[i]["id"] + "\"><img height=\"105\" src=\"" + objDataset.Tables[0].Rows[i]["m_poster"] + "\" width=\"75\" border=\"0\" /></a></li><li><a href=\"view.aspx?id=" + objDataset.Tables[0].Rows[i]["id"] + "\">" + objDataset.Tables[0].Rows[i]["m_name"] + "</a> </li></ol><ul>";
                    }
                    else
                    {
                        kindhtml = kindhtml + "</ul></div><div id=\"Layer1\"><ol style=\"float: left; margin-left: 0px; width: 236px; background-color: #f7f3f7\">";
                        kindhtml = kindhtml + "<li class=ico><img height=\"11\" src=\"images/smv/bbs_icon.gif\" width=\"8\" /> <a href=\"list.aspx?id=" + objDataset.Tables[0].Rows[i]["m_kid"] + "\">" + objDataset.Tables[0].Rows[i]["k_name"] + "</a> </li><li class=classtxt><a href=\"list.aspx?id=" + objDataset.Tables[0].Rows[i]["m_kid"] + "\"><img height=\"11\" src=\"images/smv/bbs_more.gif\" width=\"45\" border=\"0\" /></a></li></ol>";
                        kindhtml = kindhtml + "<ol class=classpic><li><a href=\"view.aspx?id=" + objDataset.Tables[0].Rows[i]["id"] + "\"><img height=\"105\" src=\"" + objDataset.Tables[0].Rows[i]["m_poster"] + "\" width=\"75\" border=\"0\" /></a></li><li><a href=\"view.aspx?id=" + objDataset.Tables[0].Rows[i]["id"] + "\">" + objDataset.Tables[0].Rows[i]["m_name"] + "</a> </li></ol><ul>";
                    }
                }
                else
                {
                    kindhtml = kindhtml + "<li class=classtitle>·<a href=\"view.aspx?id=" + objDataset.Tables[0].Rows[i]["id"] + "\">" + objDataset.Tables[0].Rows[i]["m_name"] + "</a> </li>";
                }
                if (i == RecordCount - 1)
                {
                    kindhtml = kindhtml + "</ul></div>";
                }
            }