日期:2014-05-18  浏览次数:21043 次

关于电影网站按分类列出电影的问题,请看示意图
小弟做了一个电影网站,页面上要按分类列出电影,每个分类列出5部电影,第一部的图片和名字在左边列出来,后面4部的名字列在右边就行了,这样做其实也不难.
先查出所有分类的名字,然后循环出来,再嵌套查询top5每个分类的电影。

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


------解决方案--------------------
没有做过,但是还是来帮顶一下,关注ing
------解决方案--------------------
取出每个分类前五条记录的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 asc


SQL2005的写法:

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 += " ";
...
}
------解决方案--------------------
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> ";
}