Пропуск одного элемента в столбце - PullRequest
0 голосов
/ 30 марта 2010

Я создал простой новостной сайт. Я храню видео и изображения в таблице ИЗОБРАЖЕНИЙ. Добавленные видео содержат видео, а добавленные изображения хранятся в столбце с именем ImagesType. Изображения и видео, прикрепленные к новостям, хранятся в столбце ImagesID таблицы NEWS. Моя проблема возникает, когда мне нужно отобразить первое изображение новости.

т.е.
Таблица ИЗОБРАЖЕНИЙ:

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
%>

Ответы [ 2 ]

1 голос
/ 31 марта 2010

Вы должны иметь 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)
0 голосов
/ 30 марта 2010

Вы действительно должны иметь таблицу видео и таблицу изображений. Это было бы намного лучше, и это решило бы вашу проблему в более чистом решении.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...