Avatar billede brownghost Nybegynder
21. juli 2006 - 13:39 Der er 4 kommentarer og
1 løsning

Problem med ID der kommer mere end 1 gang i et loop.

Problem med ID der kommer mere end 1 gang i et loop.

Jeg har en kode hvor jeg forsøger at loope nogle vare.
Det virker fint.
Dog forsøger jeg at loop vare, kun der hvor der er vare på lager.

IV.StockCount > 0


Vare tabellen: Shop_Items
Vare Version tabellen: Shop_ItemVersions


Der kan være eks 4 vareversioner med samme id.
Da der kan være oprettet eks 4 versioner til den vare.
Medium, large, xl, og xxl

Mit problem er at selve hoved varen (Tabel Shop_Items), kun skal vises 1 gang i mit loop.
Men er der på varen 4 versioner, der alle har mere end 1 på lager. Viser  den varen 4 gange.
;(

Hvordan undgår jeg det, ? Hvordan fixer jeg det.


<%
strSQL = _
    "SELECT TOP 10 I.ID AS ID, I.CategoryID, I.Title_UK AS ItemTitle, I.Description_UK AS ItemDescription, I.Forhandlervare AS Forhandlervare, I.ImageID, I.Image2ID, I.Image3ID, I.Image4ID, I.StockOnly as StockOnly, " & _
    "IV.ID AS ItemVersionID, IV.Code AS ItemVersionCode, IV.Title_UK AS ItemVersionTitle, IV.Price AS ItemVersionPrice, " & _
    "IV.StockCount " & _
    "FROM Shop_Items I " & _
    "INNER JOIN Shop_ItemVersions IV ON IV.ItemID=I.ID AND IV.DateDeleted IS NULL And IV.StockCount > 0" & _
    "WHERE I.ViewState=0 AND I.Template=0 AND I.Forhandlervare=0 AND I.DateDeleted IS NULL"
Set rsItem = objConn.Execute(strSQL)
%>

<%
            Do While Not rsItem.EOF       
%>


<%= rsItem("ID") %>


<%
                rsItem.MoveNext
            Loop
            %>
Avatar billede korup Nybegynder
21. juli 2006 - 13:55 #1
kan man ikke skrive dette til:

<%

Do While Not rsItem.EOF
    if NOT (SammeID = rsItem("ID"))
%>
    <%= rsItem("ID") %>
<%

    end if
    SammeID = rsItem("ID")

        rsItem.MoveNext
        Loop
%>
Avatar billede brownghost Nybegynder
21. juli 2006 - 16:01 #2
Vriker ikke her er den nye kode jeg bruger for at teste det.

<%
strSQL = _
    "SELECT I.ID AS ID, I.CategoryID, I.Title_UK AS ItemTitle, I.Description_UK AS ItemDescription, I.Forhandlervare AS Forhandlervare, I.ImageID, I.Image2ID, I.Image3ID, I.Image4ID, I.StockOnly as StockOnly, " & _
    "IV.ID AS ItemVersionID, IV.Code AS ItemVersionCode, IV.Title_UK AS ItemVersionTitle, IV.Price AS ItemVersionPrice, " & _
    "IV.StockCount " & _
    "FROM Shop_Items I " & _
    "INNER JOIN Shop_ItemVersions IV ON IV.ItemID=I.ID AND IV.DateDeleted IS NULL And IV.StockCount > 0" & _
    "WHERE I.ViewState=0 AND I.Template=0 AND I.Forhandlervare=0 AND I.DateDeleted IS NULL and I.CategoryID=274 or I.CategoryID=272"
Set rsItem = objConn.Execute(strSQL)
%>

<%

Do While Not rsItem.EOF
    if NOT (SammeID = rsItem("ID")) then
%>

<span style="color: #FF0000; font-weight: bold; font-size: 18"><%= rsItem("ID") %></span><br>
<%= Replace(rsItem("ItemTitle"), "&", "and") %><br>
http://www.test.dk/shop/item.asp?id=<%= rsItem("ID") %><br>
http://www.test.dk/dbimages/scaled/<%= rsItem("ImageID") %>_350x0.jpg<br>
<%= Replace(PriceDollars(rsItem("ItemVersionPrice")), ",", ".") %><br>
<%= Replace(rsItem("ItemVersionCode"), "&", "and") %><br>
<%= rsItem("StockCount") %><br>



<p></p>


<%
    end if
    SammeID = rsItem("ID")

        rsItem.MoveNext
        Loop
%>
Avatar billede nielle Nybegynder
21. juli 2006 - 19:04 #3
Man bruger normalt SQL-koden DISTINCT for at eliminere dubletter:

SELECT DISTINCT TOP 10 ditFelt FROM dinTabel ORDER BU id ASC

Da jeg ikke helt kan gennemskue din SQL, skal jeg dog ikke sige om det nødvendigvis kan bruges i dit tilfælde...
Avatar billede brownghost Nybegynder
21. april 2007 - 12:21 #4
Tak skriv svar så acceptere jeg, glemte dig helt sorry :(
Avatar billede nielle Nybegynder
21. april 2007 - 12:53 #5
Svar :^)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester