Avatar billede perstig Nybegynder
28. februar 2001 - 14:30 Der er 18 kommentarer og
1 løsning

SQL-trouble på min ASP-side

Når afvikler følgende SQL sætning på min ASP-side får jeg vist alle vare, men den skulle kun vise en enkelt hvis der er flere??

>>Kode start<<
SQL4 = \"SELECT DISTINCT * FROM FS_AlleVare WHERE T_Vare.UGrp2ID_Ref = \" & UGrp2ID & \"AND T_Vare.UGrp1ID_Ref = \" & request.cookies(\"ugrp1\")(\"id\")
>>Kode slut<<

UGrp2ID er en variabel som tilskrives værdi umiddelbart før SQL sætningen
Avatar billede nute Nybegynder
28. februar 2001 - 14:34 #1
du vil alltid få et resultat for alle records i din db hvor dine kriterier oppfylles.

/nute
Avatar billede erikjacobsen Ekspert
28. februar 2001 - 14:35 #2
prøv at fjerne de to  T_Vare. 
Avatar billede dudal Nybegynder
28. februar 2001 - 14:35 #3
Du kan kun lave en selevt distinct på en enkelt kolonne i databasen. Eks:

\"Select Distinct(feltnavn) from bla bla where bla bla\"

/Jesper
Avatar billede erikjacobsen Ekspert
28. februar 2001 - 14:37 #4
man kan godt på alle, men man får også alle - altså der bliver ikke frasorteret
nogen af den grund. Så distinct er overflødig ovenfor - ikke forkert
Avatar billede tpiil Nybegynder
28. februar 2001 - 15:05 #5
SQL4 = \"SELECT DISTINCT * FROM FS_AlleVare WHERE T_Vare.UGrp2ID_Ref = \'\" & UGrp2ID & \"\' AND T_Vare.UGrp1ID_Ref = \" & request.cookies(\"ugrp1\")(\"id\")
Avatar billede erikjacobsen Ekspert
28. februar 2001 - 15:08 #6
Ja, undskyld, tpiil, men den virkede jo faktisk, hans sql, så det er næppe
det der er galt. Det jeg mente før var:

SQL4 = \"SELECT DISTINCT * FROM FS_AlleVare WHERE UGrp2ID_Ref = \" & UGrp2ID &
  \"AND UGrp1ID_Ref = \" & request.cookies(\"ugrp1\")(\"id\")
Avatar billede tpiil Nybegynder
28. februar 2001 - 15:09 #7
nåå ups læste det som det var en SQL fejl :)
Avatar billede tpiil Nybegynder
28. februar 2001 - 15:33 #8
prøv denne hvis erikjacobsen\'s ikke virker:

SQL4 = \"SELECT DISTINCT * FROM FS_AlleVare,T_Vare WHERE UGrp2ID_Ref = \" & UGrp2ID & \" AND UGrp1ID_Ref = \" & request.cookies(\"ugrp1\")(\"id\")
Avatar billede perstig Nybegynder
28. februar 2001 - 15:38 #9
Som jeg forstår jeres råd, så bliver jeg nødt til at lave et seperat udtræk for hver række jeg ønsker at vise.

Er det korrect forstået
Avatar billede erikjacobsen Ekspert
28. februar 2001 - 15:40 #10
Nej!

Mener du at du skal udtrække noget fra både FS_AlleVare og T_Vare ??
Avatar billede nute Nybegynder
28. februar 2001 - 15:41 #11
kan du ikke benytte primærnøkkel i din query ?

/nute
Avatar billede nute Nybegynder
28. februar 2001 - 15:43 #12
DISTINCT er jo egentlig en grim kommando å benytte. det som skjer er at det blir utført en full table-scan...noe som både tar tid å ressurser.

/nute
Avatar billede dudal Nybegynder
28. februar 2001 - 15:48 #13
Hvis f.eks du kun vil have én udlistning pr vare som optræder flere gange i din tabel, og varenavnet ligger i feltet varenavn, kan du prøve at bruge følgende:

SQL4 = \"SELECT DISTINCT(varenavn) FROM FS_AlleVare WHERE UGrp2ID_Ref = \" & UGrp2ID &
  \"AND UGrp1ID_Ref = \" & request.cookies(\"ugrp1\")(\"id\")

Problemet når du laver en distinct på alle felter er at den også tager hver unik Id. Så hvis du har en identity id på din tabel, så vil alle poster jo komme med da id jo er unik for hver post.

/Jesper
Avatar billede perstig Nybegynder
28. februar 2001 - 18:08 #14
Jeg ved ikke om det giver lidt mere mening at i ser lidt mere kode:

>>Kode start<<
<%
    SQL4 = \"SELECT DISTINCT * FROM FS_AlleVare WHERE T_Vare.UGrp2ID_Ref = \" & UGrp2ID & \"AND T_Vare.UGrp1ID_Ref = \" & request.cookies(\"ugrp1\")(\"id\")
        set Resultat4 = DBCon.execute(SQL4)

    UGrp2IDt = Resultat4(\"Tekst2\")
      UGrp2ID = Resultat4(\"UGrp2ID_Ref\")
    response.cookies(\"ugrp2\") = UGrp2IDt
    response.Cookies(\"ugrp2\")(\"id\") = UGrp2ID
    response.cookies(\"ugrp2\").expires = now() + 60
%>
<TABLE WIDTH=\"100%\" BGCOLOR=\"314057\" ALIGN=\"center\" BORDER=\"0\" CELLPADDING=\"0\" CELLSPACING=\"1\">
<TR>
    <TD CLASS=\"cell4\" HEIGHT=\"20\" WIDTH=\"100%\" ALIGN=\"center\"><%=Resultat4(\"Tekst2\")%>
</TD>
</TR>
</TABLE>

<TABLE WIDTH=\"400\" ALIGN=\"center\" BORDER=\"0\" CELLPADDING=\"10\" CELLSPACING=\"10\">
<TR>
      <% 
    i = 1       

      if not(Resultat4.EOF) and not(Resultat4.BOF) then               
      Resultat4.movefirst                                               
      do until Resultat4.EOF
                       
            response.write(\"<TD WIDTH=100 ALIGN=center>\")
            response.write(\"<A HREF=index.asp?UGrp3=\")
            response.write(Resultat4.fields(\"UGrp3ID_Ref\"))
            response.write(\">\")%>
        <%
            if Resultat4(\"BilledNr\") <>\"\" then%>
                    <IMG SRC=\"images/vare/<%response.write(Resultat4.fields(\"BilledNr\"))%>.JPG\" BORDER=\"0\" WIDTH=\"80\" HEIGHT=\"120\" ALIGN=\"bottom\" ALT=\"Foto af varegruppen\"><BR>                                                                                                                                                                                       
                    <SPAN CLASS=\"atext\" ALIGN=\"center\"><%=Resultat4(\"Tekst3\")%></SPAN>
        <%
            else%>
                    <IMG SRC=\"images/fotopaavej.jpg\" BORDER=\"0\" WIDTH=\"75\" HEIGHT=\"112\" ALIGN=\"bottom\" ALT=\"Billede på vej\"><BR>
                <SPAN CLASS=\"atext\" ALIGN=\"center\"><%=Resultat4(\"Tekst3\")%></SPAN>                                                                                                                                                                     

        <%
            end if%>
        <%
            response.write(\"</A>\")
                    if i mod 4 = 0 then
                    response.write(\"</tr><tr>\")
                      end if

                        i = i + 1

        Resultat4.movenext                                                                   
            loop %></TD>
        <%                                                                                               
            end if%>
</TR> 
</TABLE>
>>Kode slut<<

Jeg skal trække BilledNr og Tekst3 ud og bruge på den aktuelle side, men jeg benytter også nogle af de andre felter til andet.

Jeg håber i kloges lidt af det her.
Avatar billede gheko Nybegynder
28. februar 2001 - 18:08 #15
Hvis du er kun interesseret i en række, og dit SQL statement kan give flere rækker, så kan du bl.a. begrænse ved at indsætte/tilføje: where rowid = 1
Avatar billede erikjacobsen Ekspert
28. februar 2001 - 21:24 #16
Det giver mig ikke noget hjælp at se den kode. Kan du give os strukturen af
dine tabeller, evt. med lidt data, og hvad det så er du vil udtrække ??
Avatar billede perstig Nybegynder
28. februar 2001 - 21:47 #17
>>erikjacobsen
Jeg skal prøve

Først den tabel det drejer sig om:
-----------------------------------------
T_Vare
-----------------------------------------
VareNr      =  key
HGrpID_Ref  =  Reference til hovedgruppe tabel
UGrp1ID_Ref =  Reference til undergrp1 tabel
UGrp2ID_Ref =  Reference til undergrp2 tabel
UGrp3ID_Ref =  Reference til undergrp3 tabel
Lev_Ref    =  Reference til leverandør tabel
Billed      =  OLE-felt bruges kun i DBén
BilledNr    =  nummer som billed gemmes under i mappen
Beskrivelsen=  af varen
Vejluds
NetPris
Paanette
Paalager
SolgtAntal
----------------------------------------

Så er der en forespørgelsen FS_AlleVare som henter al data ud af T_Vare. 

Og en som jeg lige har lavet og som hedder FS_AlleVareDistinctTekst3
Med denne FS er det faktisk lykkes mig at få Tekst3 vist på siden efter hensigten.
Men når jeg begynder at få billed med går det galt

Herunder den nye kode på siden.

>>Kode begynd<<
<%
    SQL4 = \"SELECT * FROM FS_AlleVare WHERE UGrp2ID_Ref = \" & UGrp2ID & \"AND T_Vare.UGrp1ID_Ref = \" & request.cookies(\"ugrp1\")(\"id\")
        set Resultat4 = DBCon.execute(SQL4)

    UGrp2IDt = Resultat4(\"Tekst2\")
      UGrp2ID = Resultat4(\"UGrp2ID_Ref\")
    response.cookies(\"ugrp2\") = UGrp2IDt
    response.Cookies(\"ugrp2\")(\"id\") = UGrp2ID
    response.cookies(\"ugrp2\").expires = now() + 60

    UGrp3IDt = Resultat4(\"Tekst3\")
      UGrp3ID = Resultat4(\"UGrp3ID_Ref\")
    response.cookies(\"ugrp3\") = UGrp2IDt
    response.Cookies(\"ugrp3\")(\"id\") = UGrp2ID
    response.cookies(\"ugrp3\").expires = now() + 60

    SQL5 =\"SELECT * FROM FS_AlleVareDistinctTekst3 WHERE UGrp2ID_Ref = \" & request.cookies(\"ugrp2\")(\"id\") & \"AND UGrp1ID_Ref = \" & request.cookies(\"ugrp1\")(\"id\")
    set Resultat5 = DBCon.execute(SQL5)

    SQL6 =\"SELECT BilledNr FROM FS_AlleVare WHERE UGrp2ID_Ref = \" & UGrp2ID & \"AND UGrp1ID_Ref = \" & request.cookies(\"ugrp1\")(\"id\")
    set Resultat6 = DBCon.execute(SQL6)
%>
<TABLE WIDTH=\"100%\" BGCOLOR=\"314057\" ALIGN=\"center\" BORDER=\"0\" CELLPADDING=\"0\" CELLSPACING=\"1\">
<TR>
    <TD CLASS=\"cell4\" HEIGHT=\"20\" WIDTH=\"100%\" ALIGN=\"center\"><%=Resultat4(\"Tekst2\")%>
</TD>
</TR>
</TABLE>

<TABLE WIDTH=\"400\" ALIGN=\"center\"  BORDER=\"0\" CELLPADDING=\"10\" CELLSPACING=\"10\">
<TR> 
      <% 
    i = 1       

      if not(Resultat5.EOF) and not(Resultat5.BOF) then               
      Resultat5.movefirst                                               
      do until Resultat5.EOF
                             
            response.write(\"<TD WIDTH=100 ALIGN=center>\")
            response.write(\"<A HREF=index.asp?UGrp3=\")
            response.write(Resultat5.fields(\"UGrp3ID_Ref\"))
            response.write(\">\")%><SPAN CLASS=\"atext\"><%
        response.write(Resultat5.fields(\"Tekst3\"))
        response.write(\"</A>\")%></SPAN><% 
                    if i mod 4 = 0 then
                    response.write(\"</tr><tr>\")
                      end if

                        i = i + 1

        Resultat5.movenext                                                                 
            loop %></TD>
        <%                                                                                               
            end if%>
</TR> 
</TABLE>
>>Kode slut<<
Avatar billede erikjacobsen Ekspert
28. februar 2001 - 21:58 #18
Ah, FS.... er en forespørgsel.... Ok - lidt for Access teknisk til mig - beklager
Avatar billede perstig Nybegynder
13. marts 2001 - 23:41 #19
Lukker
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