Sql server 2005 跳过列中的一项
我创建了一个简单的新闻网站。我将视频和图像都存储在图像表中。添加的视频包含视频,添加的图像包含存储在名为ImagesType列中的图像。附加到新闻的图像和视频存储在新闻表的ImagesID列中。我的问题发生在我需要显示新闻的第一个图像时 i、 e.Sql server 2005 跳过列中的一项,sql-server-2005,asp-classic,Sql Server 2005,Asp Classic,我创建了一个简单的新闻网站。我将视频和图像都存储在图像表中。添加的视频包含视频,添加的图像包含存储在名为ImagesType列中的图像。附加到新闻的图像和视频存储在新闻表的ImagesID列中。我的问题发生在我需要显示新闻的第一个图像时 i、 e. 图像表: ImagesID ImagesLgURL ImagesType 1 /FLPM/media/videos/0H7T9C0F.flv videos 2 /
图像表:
ImagesID ImagesLgURL ImagesType
1 /FLPM/media/videos/0H7T9C0F.flv videos
2 /FLPM/media/images/8R5D7M8O.jpg images
3 /FLPM/media/images/0E7Q9Z0C.jpg images
NEWS table
NewsID ImagesID NewsTitle
1 1;2; Street Chic: Paris ERROR
2 3; Paris Runway NO ERROR
下面的代码给出了第二条新闻的一个错误,因为列表中存储的第一个ImageID不是图像而是视频。我需要找到一种方法来跳过视频项目并显示下一幅图像
我希望我说得有道理
SQL = "SELECT NEWSID, CATEGORIESID, IMAGESID, NEWSTITLE, NEWSSHORTDESC, NEWSACTIVE, NEWSDATEENTERED"
SQL = SQL & " FROM NEWS N"
SQL = SQL & " WHERE NEWSACTIVE = 1"
SQL = SQL & " ORDER BY NEWSDATEENTERED DESC"
Set objNews = objConn.Execute(SQL)
Do While intLooper1 <= 3 And Not objNews.EOF
IMAGES = Split(Left(objNews("IMAGESID"),Len(objNews("IMAGESID"))-1), ";")
SQL = "SELECT ImagesID, ImagesName, ImagesLgURL, ImagesSmURL, ImagesType"
SQL = SQL & " FROM IMAGES I"
SQL = SQL & " WHERE ImagesID = " & IMAGES(0) & " AND ImagesType = 'images'"
Set objLgImage = objConn.Execute(SQL)
<div>
<a href="?Section=news&SubSection=redirect&NEWSID=<%=objNews("NEWSID")%>">
<img src="<%=objLgImage("ImagesLgURL")%>" alt="<%=objLgImage("ImagesName")%>" />
</a>
</div>
<%
objLgImage.Close
Set objLgImage = Nothing
intLooper1 = intLooper1 + 1
objNews.MoveNext
Loop
%>
SQL=“选择NEWSID、CATEGORIESID、IMAGESID、NEWSTITLE、NEWSSHORTDESC、NEWSACTIVE、NEWSDATEENTERED”
SQL=SQL&“来自新闻N”
SQL=SQL&“其中NEWSACTIVE=1”
SQL=SQL&“按新闻日期输入的订单描述”
设置objNews=objConn.Execute(SQL)
当intLooper1时,您真的应该有一个视频表和一个图像表。这将是一个更好的设计,它将以一个更干净的解决方案解决您的问题。您应该在图像表中有NewsID,并在其上放置ForeingKey
**NEWS table**
NewsID NewsTitle
----------------------------
1 Street Chic: Paris
2 Paris Runway
**Images table**
ImageID (PK) NewsID (FK) ImagesLgURL ImagesType
-------------------------------------------------------------------------
1 1 /FLPM/media/videos/0H7T9C0F.flv videos
2 1 /FLPM/media/images/8R5D7M8O.jpg images
3 2 /FLPM/media/images/0E7Q9Z0C.jpg images
然后,您可以轻松地选择每个新闻的第一张照片
SQL = "SELECT NEWSID, CATEGORIESID, NEWSTITLE, NEWSSHORTDESC, NEWSACTIVE,"
SQL = SQL & " NEWSDATEENTERED,"
SQL = SQL & " (SELECT TOP 1 ImageID from Images where Images.NewsID = N.NewsID
AND Images.ImageType = 'Images') as ImageID"
SQL = SQL & " FROM NEWS N"
SQL = SQL & " WHERE NEWSACTIVE = 1"
SQL = SQL & " ORDER BY NEWSDATEENTERED DESC"
Set objNews = objConn.Execute(SQL)
也许吧,但如果这两种类型的许多列相同,那么最好将表重命名为类似“media”的名称。