小弟做了一个电影网站,页面上要按分类列出电影,每个分类列出5部电影,第一部的图片和名字在左边列出来,后面4部的名字列在右边就行了,这样做其实也不难.
先查出所有分类的名字,然后循环出来,再嵌套查询top5每个分类的电影。这不是我想要的结果,我想一个SQL语句查出所有分类的前5部电影(select top 5 from 电影库 group by 分类 order by addtime desc),然后一次按格式列出分类名(就是不用数据集嵌套,不用再根据分类查询一次数据库了),第一部的图片和名字在左边列出来,后面4部的名字列在右边
下面给个图片的链接http://www.swsky.cn/tmp/movie.jpg,就是要这样的格式,不知道如何实现?有哪位大哥做过?
先查出所有分类的名字,然后循环出来,再嵌套查询top5每个分类的电影。这不是我想要的结果,我想一个SQL语句查出所有分类的前5部电影(select top 5 from 电影库 group by 分类 order by addtime desc),然后一次按格式列出分类名(就是不用数据集嵌套,不用再根据分类查询一次数据库了),第一部的图片和名字在左边列出来,后面4部的名字列在右边
下面给个图片的链接http://www.swsky.cn/tmp/movie.jpg,就是要这样的格式,不知道如何实现?有哪位大哥做过?
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 +="";
...
}
我的电影名称、电影图片、电影分类ID在一个表中,
电影分类名称在电影分类表中通过ID号跟电影表中的电影分类ID关联
取出前五个电影不难,就是后面的步骤。
我用C#做的前台页面,用repeater做的显示控件。按你的说法,我定义个public string HTML
在后台做拼接后在前台代入?
不能用什么控件直接做到吗?
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>";
}
}