Om det kan løses med et Array eller ej er svært at svare på uden at vide lidt mere om projektet - men siden du ikke kan køre distinct må det være fordi du hiver andre værdier med ud og som formentlig også udskrives i dit loop. og i så fald tror jeg at hurtigste løsning vil være dette;
var = "" If var <> rs("val") Then Response.Write rs("val") var = rs("val") End If
Da du formentlig ellers vil skulle arbejde med flere loops
korrekt - der er nogle begrænsninger og nogle forudsætninger. Men hvilke muligheder der ellers er kræver næsten et bedre oplæg da det ellers let kan blive tungt at køre.
Kan ikke helt se hvorfor distinct ikke kan bruges hvis der er noget under den titel altså flere poster med samme tittel, kan dette køres i et andet lookup i forhold til titlen?
Ja der er eks. 100 poster der bliver gennemløbet og her er måske 30 poster med samme titel, derfor ønsker jeg kun 1 post vist, da alle linker til det samme emne.
Har du evt. et eks. på hvordan du vil køre et ekstra/andet lookup?
Det er temmelig svært at forholde sig til de noget abstrakte informationer du giver om din problemstilling. Du vil få meget hurtigere og mere kvalificeret hjælp, hvis du giver os noget konkret at arbejde med. F.eks. kunne det være interessant at se din datastruktur og evt. relationer (hvis der er flere tabeller). Det kunne også være rart at have en konkret beskrivelse af hvad du så vil have ud af dine data i dette scenarie. Hjælp os med at hjælpe dig :)
Lidt afhængig af hvordan du vil viset det kan det gøres sådan
Du har et view (tror det hedder en forespørgsel på dansk)
Herffra henter du feks overskrift rs.open="Select distinct overskrift from view" if not rs.eof then Do while not rs.eof Response.write "Overskrift: " & rs("overskrift") rs2.open "Select det nye i view where overskiftID = " & rs("overskriftID") &"" if not rs2.eof then do while not rs2.eof Response.write "Her er posterne under overskrift " & rs2("Feltnavn") & " rs2.movenext loop rs.close end if rs2movenext loop end if rs.close
lordnelson >> er ikke helt med på dit foreslag, jeg har dog prøvet følgende her:
<% 'Finder mine resultater ResponseList = "" Set rs = Conn.Execute("SELECT * FROM data WHERE request = '" & query & "'")
'Gemmer id i Array Do While Not rs.EoF If ResponseList <> "" Then ResponseList = ResponseList & "|" ResponseList = ResponseList & rs("id") rs.MoveNext Loop
ResponseArr = Split(ResponseList, "|")
For idx=LBound(ResponseArr) To UBound(ResponseArr) Next
'Henter DISTINCT fra database Set rs = Conn.Execute("SELECT DISTINCT titel FROM data WHERE id IN ('" & ResponseArr & "')")
Do While Not rs.eof Response.Write rs("titel") rs.movenext Loop %>
Men jeg får en type error i select DISTINCT? Burde dette ikke virke?
Separator i en IN i SQL er komma, så du kan bare gøre såleds:
<% 'Finder mine resultater ResponseList = "" Set rs = Conn.Execute("SELECT * FROM data WHERE request = '" & query & "'")
'Gemmer id i kommasepareret streng Do While Not rs.EoF If ResponseList <> "" Then ResponseList = ResponseList & "," ResponseList = ResponseList & rs("id") rs.MoveNext Loop
'Henter DISTINCT fra database Set rs = Conn.Execute("SELECT DISTINCT titel FROM data WHERE id IN ('" & ResponseList & "')")
Do While Not rs.eof Response.Write rs("titel") rs.movenext Loop %>
Selvom det for mig at se er nogenlunde det samme som at gøre således:
<% Set rs = Conn.Execute("SELECT DISTINCT titel FROM data WHERE request = '" & query & "'") Do While Not rs.eof Response.Write rs("titel") rs.movenext Loop rs.close %>
er lidt svært at skrive det korrekst når man ikke ved have du vil have op Men skriver du SELECT DISTINCT titel FROM data WHERE id IN Skal du også hente Id op altså selct distinct titel, id from osv osv
du kan ikke bruge ID hvis dett ikke bliver hentet med op
Nå nå Så forklar lige den her: katID = 2 Set Conn = Server.CreateObject("ADODB.Connection") Conn.Open Application("sql") Set RS = Server.CreateObject("ADODB.Recordset") RS.open "select distinct kategori where kategoriId= " & katId & "", conn, , , adCmdText response.write rs("kategori")
rs.close conn.close %>
Her får jeg fejlen: Microsoft OLE DB Provider for SQL Server error '80040e14'
Invalid column name 'kategoriId'.
/sjov.asp, line 14
Du må meget gerne forklare denne fejl for hvis jeg skriver select distinct kategori, kategoriID where kategoriId= " & katId & "",
Hvis man kun henter titel op kan man jo ikke bruge id til at finde de næste poster der hænger sammen med ID. Tænker mere på hvis det er flere tabeller der hænger sammen i et diagram er man jo tvunget til at hente ID med op da' man jo sjældent hænget tabellerne sammen med en titel tekst
så hvorfor jeg ville have ID med op var for at finde de poster hvor ID i den næste tabel(view) hænger sammen med det id der bliver hentet.
...men for nu lige at adressere din opstillede problemstilling, så kan man benytte paging i recordsets, hvilket giver dig mulighed for at hente en given side ud fra et sidenr, hvilket gør dig uafhængig af id'et.
softspot >> jeg kan ikke bruge DISTINCT hvor jeg søger med mit query, da jeg så ikke får gennemløbet alle rækker i kolonnen.
Derfor må jeg starte med at søge fra top til tå i databasen og derefter sorterer udtrækket så der kun vises et emne selvom der måske findes 30 steder i databasen hvor de givne søgeord forekommer.
Jeg vil påstå at den select distinct jeg foreslog i indlæget pr. 09/01-2007 12:03:47, finder ligeså meget som de to forspørgsler ellers blev foreslået.
At du ikke får gennemløbet alle rækker er vel underordnet idet du vil opnå at udtrække de titler hvor dit kriterie passer. Så med mindre du skal bruge mere fra din tabel end titel, så kan jeg ikke se hvorfor distinct ikke kan bruges...
Jeg foretager søgning i kolonnen beskrivelser og viser så titel/emnet hertil, det er vel ligesom et forum, hvor en tråd har samme emne hele vejen igennem og med forskellig indhold i indlæg.
Dvs. det du vil opnå er at vise de emner (for nu at blive i forumanalogien), hvori der findes indlæg som har et givent tekstfragment?
Igen vil jeg påstå (og det er en rent teoretisk baseret påstand), at hvis du prøver at køre den select distinct som vi har snakket om her i denne tråd og kontrollerer datagrundlaget, så vil du opdage at de emner der vises rent faktisk også indeholder mindst et indlæg med den tekst du søger. Test er en god metode til at undersøge om noget fungerer som det skal... :)
Jeg har testet og jeg får 44 af samme emner ud, javel beskrivelsen i disse poster indeholder rigtig nok søgeordet, men jeg har stadig kun brug for et link til emnet og ikke 44.
Den allerførste post med et givent emne sætter jeg et kategori nummer ved, så hvis jeg så bare kunne gå tilbage i kaldet og kun udskrive de emner der er forskellig fra <> '0' så vil der også kun komme et emne ud.
Jeg vælger i første omgang at søge i titel og den første beskrivelse i hver kolonne, så kan det klares med en enkelt select, tror det andet vil fungerer bedst hvis jeg ændre databasestrukturen og evt. tilføjer ekstra kolonne.
SQL = "SELECT * FROM data WHERE titel LIKE '%" & queryx & "%' OR beskrivelse LIKE '%" & queryx & "%' AND kategori <> '0' ORDER by id DESC LIMIT "& currentPage &","& pageSize &""
Men kategori <> '0' bliver bare ignoreret, har jeg overset noget??
Kommer ikke videre, så lukker spg. her. Tak for hjælpen :)
Synes godt om
Ny brugerNybegynder
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.