22. marts 2005 - 07:24Der er
6 kommentarer og 1 løsning
ORDER BY giver forkerte resultater
Hej eksperter
Jeg har følgende kode:
SQL = "SELECT DISTINCT hus.Overskrift, + masser af andre hus.xxx og Uge.xxx " & _ "FROM Uge INNER JOIN hus ON Uge.Hus = hus.id " & _ "WHERE (((hus.IA) Is Null Or (hus.IA)= '')) "
Først så det ud til, at den gav nogle korrekte resultater, men efter nogle nye oprettelser er den desværre gal. Den mangler umiddelbart at sortere efter x-værdi. Jeg vil nu gerne have den til at sortere efter hus.id. Jeg har derfor prøvet at lave følgende kode:
SQL = "SELECT DISTINCT hus.Overskrift, + masser af andre hus.xxx " & _ "FROM Uge INNER JOIN hus ON Uge.Hus = hus.id " & _ "WHERE (((hus.IA) Is Null Or (hus.IA)= '')) " & _ "ORDER BY hus.id "
men det betyder bare, at første annonce vises ca. 10.000 gange !!!!
I lang tid har samarbejdsbranchen fokuseret på at forbedre enhedsfunktioner – bedre kameraer, klarere lyd og smartere software. Men den virkelige forvandling handler ikke om funktioner.
Meningen er, at alle emner skal vises, hvilket betyder, at en søgning kan ende med 200 annoncer. Disse annoncer vil jeg gerne have listet i korrekt rækkefølge - den korrekte rækkefølge skal følge kolonnen "id" i tabellen "hus", stigende.
Da du har DISTINCT med i din sidste forespørgsel burde det under ingen omstændigheder kunne resultere i flere ens rækker. Du har ikke alligevel et felt fra tabellen uge med vel? Måske som det yderste felt, du aldrig fik kigget på? Så det alligevel ikke er helt ens rækker?
I næste kommentar smider jeg lige hele koden, da det måske kan være med til at gøre det lidt mere overskueligt. Det er resultaterne af en søgefunktion, som både henter oplysninger fra tabellen hus og uge.
I tabellen hus er alle annoncer, mens deres udlejningskalender er i tabellen uge. Tabellen hus har omkring 200 annoncer.
Jeg vil gerne have det sådan, at når der fremkommer et søgeresultat, så skal annoncerne listes i en rækkefølge, som bestemmes af id i tabellen hus (stigende).
If iStart > 0 then 'Vis Forrige link Response.Write "<td width='20%' align='left'><font face='Arial' size=""3""><A HREF=""?iStart=" & iStart-iOffset & _ "&iOffset=" & iOffset & """>Forrige</A></font></td>" Else Response.Write "<td width='20%'> </td>" End if
antalsider = total / iOffset
Response.Write "<td width='60%' align='center'><font face='Arial' size=""3"">" For i = 0 to antalsider If Clng(i * iOffset) = Clng(iStart) then Response.Write "<A HREF=""?iStart=" & iOffset * i & _ "&iOffset=" & iOffset & """><u>" & i + 1 & "</u> </A>" Else Response.Write "<A HREF=""?iStart=" & iOffset * i & _ "&iOffset=" & iOffset & """>" & i + 1 & " </A>" End if Next Response.Write "</font></td>"
If iStop < total then 'Vis næste link Response.Write "<td width='20%' align='right'><font face='Arial' size=""3""><A HREF=""?iStart=" & iStart+iOffset & _ "&iOffset=" & iOffset & """>Næste</A></font></td>" Else Response.Write "<td width='20%'> </td>" End if End Function
'skriver tabellen med et item (hus) Call SkrivHusTabel(id, HusLink, overskrift, annoncetekst)
'mellemrum mellem tabellerne Response.Write "<br>" Next
Response.write "</P>"
'skriver pagingen altså side 1 2 3 4 osv. 'variablerne brugt er iStart = starttallet for siden, total = antallet af items, iOffset = items pr. side 'iStop = hvor langt skal der vises til Call Page(iStart, total, iOffset, iStop)
'skriver total antallet af huse i området Response.Write "</tr><tr><td colspan='3'><font face='Arial' size=""3"">" & total + 1 & " sommerhuse i område " & amt & "</font></td></tr></table>" %>
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.