Avatar billede muggen Nybegynder
30. september 2003 - 22:29 Der er 6 kommentarer og
1 løsning

SQL: poster der ligger tættest på hver side af det angivede tal

Jeg har et søgefelt hvor man kan søge på et produkts vægt. Jeg laver en forspørgsel via sql som læser fra en Access database. I forhold til det tal som man søger på, så skal jeg også have fat i det tal som er tættest på det adspurgte men mindre end tallet selv og det som ligger tættest på tallet selv, men som er større end tallet selv.

Eks.
Jeg har f.eks. 5 produkter i en database og hvert produkt har en en vægt på henholdsvis 2 - 4 - 5 - 7 - 6 kg. Hvis man f.eks. taster 3 ind i søgefeltet, så skal forspørgselen finde frem til de to poster/produkter som vejer henholdsvis 3 og 4 kg. Hvordan gør jeg lige det? Håber i forstår hvad jeg mener. På forhånd tak for hjælpen.
Avatar billede erikjacobsen Ekspert
30. september 2003 - 22:32 #1
Du kan lave 2 forespørgsler

  select top 1 * from tabel where vaegt<=3 order by vaegt desc

og tilsvarende
Avatar billede netro Nybegynder
30. september 2003 - 22:32 #2
Set objrs = "objConn.Execute("Select Top 1 Tal From Tabel Where Tal < " & Var & " Order By Tal Desc Union Select Top 1 Tal From Tabel Where Tal > " & Var & " Order By Tal")
While Not objrs.EOF
  Response.Write objrs("Tal") & "<br>"
  objrs.MoveNext
Wend
Avatar billede netro Nybegynder
30. september 2003 - 22:33 #3
Der kom lige en " for meget foran objConn.
Avatar billede muggen Nybegynder
01. oktober 2003 - 21:17 #4
netro> Det virker fint, men der skal lige tages højde for noget mere (har jeg lige fundet ud af). Hvis selve det tal der søges på matcher  et i databasen, så skal det selvfølgelig også vises. Og hvis der er flere ens tal i databasen som matcher, så skal de alle vises. Av, hvordan styrer jeg det? På forhånd tak for hjælpen.
Avatar billede erikjacobsen Ekspert
01. oktober 2003 - 21:18 #5
Erstat hans < med et <=
Avatar billede muggen Nybegynder
01. oktober 2003 - 21:32 #6
erikjacobsen>OK, det havde jeg selv regnet ud. Men hvordan får jeg vist flere poster hvis de alle matcher det søgte tal 100%? Det spærrer "top 1" for så vidt jeg kan se. Men "top 1" virker fint så længe data ikke matches 100 med flere data som er ens i databasen. Hvad gør jeg i dette tilfælde?
Avatar billede erikjacobsen Ekspert
01. oktober 2003 - 21:36 #7
Nåh, ja: 3 selects - gæt selv hvordan de skal se ud *g*
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