Sql server 2005 跳过列中的一项

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 /

我创建了一个简单的新闻网站。我将视频和图像都存储在图像表中。添加的视频包含视频,添加的图像包含存储在名为ImagesType列中的图像。附加到新闻的图像和视频存储在新闻表的ImagesID列中。我的问题发生在我需要显示新闻的第一个图像时

i、 e.
图像表:

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”的名称。