Avatar billede ameq Nybegynder
03. september 2003 - 14:46 Der er 22 kommentarer og
1 løsning

Find næste post i min database

Hej
Hvis jeg søger efter tallet 45.7 kan må så får den to poster som er tættest på under de 45.7 og de to poster som er tættest over de 45.7? selv om de 45.7 ikke finde i database
Avatar billede netro Nybegynder
03. september 2003 - 16:36 #1
Select (Top 2) Tal From Tabel Where Tal < 45.7 Order By Tal Desc (Limit 2)
Select (Top 2) Tal From Tabel Where Tal > 45.7 Order By Tal (Limit 2)
Avatar billede netro Nybegynder
03. september 2003 - 16:37 #2
(Brug limit hvis det er MySQL)
Avatar billede ameq Nybegynder
03. september 2003 - 16:38 #3
Top har du noget dok. for det?
Avatar billede netro Nybegynder
03. september 2003 - 17:13 #4
Top *skal* du bruge, hvis det er Access/MS SQL.
Avatar billede netro Nybegynder
03. september 2003 - 17:16 #5
F.eks.:

Set rs = Conn.Execute("Select Top 2 Tal From Tabel Where Tal < 45.7 Order By Tal Desc Union Select Top 2 Tal From Tabel Where Tal > 45.7 Order By Tal")
While Not rs.EOF
  Response.Write rs("Tal") & "<br>"
  rs.MoveNext
Wend
Avatar billede ameq Nybegynder
03. september 2003 - 17:18 #6
jeg bruger en MySQL server

så skal den så
Tal er min row i min table

Select (Top 2) Tal From Tabel Where Tal < 45.7 Order By Tal Desc Limit 2

Select (Top 2) Tal From Tabel Where Tal > 45.7 Order By Tal Limit 2
Avatar billede ameq Nybegynder
03. september 2003 - 17:20 #7
hvad du hvis jeg har to rows som jeg skal test på??

tal, tal2?

og den skal også finde det som er tætteste på i den?
Avatar billede ameq Nybegynder
03. september 2003 - 17:24 #8
Set rs = Conn.Execute("Select Top 2 Tal, Top 2 [Tal2] From Tabel Where Tal < 45.7 And Tal2 < 35.3 Order By Tal Desc Union Select Top 2 Tal, Top 2 Tal2 From Tabel Where Tal > 45.7 and Tal2 > 35.3 Order By Tal")

??
Avatar billede netro Nybegynder
03. september 2003 - 17:38 #9
Nej, så kan du ikke bruge Union.

Function FindTal(Kolonne, Tal, Kriterie)
  If Kriterie = "<" Then Sortering = " Desc"
  Set rs = Conn.Execute("Select " & Kolonne & " From Tabel Where " & Kolonne & Kriterie & Tal & " Order By " & Kolonne & Sortering & " Limit 2")
  While Not rs.EOF
    FindTal = FindTal & rs(Kolonne) & "<br>"
    rs.MoveNext
  Wend
End Function

Response.Write FindTal("tal", "45.7", "<")
Response.Write FindTal("tal", "45.7", ">")
Response.Write FindTal("tal2", "45.7", "<")
Response.Write FindTal("tal2", "45.7", ">")
Avatar billede ameq Nybegynder
04. september 2003 - 07:55 #10
ALT FOR NICE!
Avatar billede ameq Nybegynder
04. september 2003 - 07:55 #11
tester lige
Avatar billede ameq Nybegynder
04. september 2003 - 08:25 #12
Response.Write FindTal("tal", "4", ">")
Response.Write FindTal("tal2", "7", ">")

De to laver lidt fejl...


id tal tal2
1  2.5  3.5 
2  3.8  5.3 
3  6.4  7.9 
4  8.2  9.2 
5  11.8  10.7 
6  13.00  15.6 
7  15.7  18.9 
8  17.3  20.5 
9  19.5  21.8 
10  23.8  22.4 
11  25.4  24.8 
12  26.8  28.6 
13  28.5  29.4 
14  31.6  30.5 


tal skulle "blive" til 6.4 og 8.2 men bliver til 11.8 og 13.00
tal2 skulle "blive" til 7.9 og 9.2 men bliver til 10.7 og 15.6
Avatar billede ameq Nybegynder
04. september 2003 - 08:30 #13
kan du bare ikke se hvorfor..
Avatar billede ameq Nybegynder
04. september 2003 - 08:36 #14
Det skal lige sige at det er tal og tal2 er varchar for eller skal jeg vel ikek få et . eller , ind?
Avatar billede ameq Nybegynder
04. september 2003 - 08:39 #15
okey det hjælp hvis det bliver til en int ! Hvis nu tal er i mm kunne man så ikke bare lave en finktion som lavet input (som kommer cm f. eks. 1.1) om til mm så det bliver 11 mm?? eller hvad?
Avatar billede ameq Nybegynder
04. september 2003 - 08:43 #16
men kan det laves at jeg test på både tal og tal2 i samme sql str?
Avatar billede netro Nybegynder
04. september 2003 - 12:53 #17
Du skal bruge typen FLOAT til dine decimaltal. Hvis du bruger VARCHAR sorteres det anderledes.
Avatar billede ameq Nybegynder
04. september 2003 - 14:04 #18
men isted for jeg skal første søg i row tal også tal2 kan man ikke gøre at man søger i bygge rows så jeg får et id som passer eller passer ca (to post over og to poster under)
Avatar billede ameq Nybegynder
04. september 2003 - 15:04 #19
men den funktion virker vist eller ikke rigtig =(

<% If Request.QueryString("action") <> "view" Then %>
<form action="?action=view" method="post" name="formen">
Tal : <input name="tal" type="text"><br>
Tal2 : <input name="tal2" type="text"><br>
<input type="submit" value="Find!" name="submit">
</form>
<% Else %>
<!--#include file="db_open.asp" -->
<%

Function FindTal(Kolonne, Tal, Kriterie)
  If Kriterie = "<" Then Sortering = " Desc"
  Set rs = Conn.Execute("Select id, " & Kolonne & " From tabel Where " & Kolonne & Kriterie & "'" & Tal  & "'" &" Order By " & Kolonne & Sortering & " Limit 2")
       
  While Not rs.EOF
    FindTal = FindTal & rs(Kolonne) & " ID : " & rs("ID") & "<br>"
    rs.MoveNext
  Wend
End Function

Response.Write("<strong>Tal = " & Request.Form("tal") & "<br></strong>")
Response.Write "Tal ""<="": <br>" & FindTal("tal", Request.Form("tal"), "<=")
Response.Write "<br>Tal "">="": <br>" & FindTal("tal", Request.Form("tal"), ">=")

Response.Write("<br><strong>Tal2 = " & Request.Form("tal2") & "<br></strong>")
Response.Write "Tal2 ""<="": <br>" & FindTal("tal2", Request.Form("tal2"), "<=")
Response.Write "<br>Tal2 "">="" : <br>" & FindTal("tal2", Request.Form("tal2"), ">=")
%>
<!--#include file="db_clouse.asp" -->
<% End If %>

Det er min kode.. P.T.

Men ville godt have at der bliver find/test på to rows på engang
Avatar billede netro Nybegynder
04. september 2003 - 15:11 #20
Prøv at lege lidt med dette;

Select t1.Tal, t2.Tal From Tabel1 t1, Tabel2 t2 Where t1.Tal < 45.7 Or t2.Tal < 45.7 Order By t1.Tal Desc, t2.Tal Desc
Avatar billede ameq Nybegynder
04. september 2003 - 15:26 #21
t1 og t2 hvad er det?
Avatar billede ameq Nybegynder
04. september 2003 - 15:26 #22
og skal jeg have flere tabler?
Avatar billede ameq Nybegynder
17. september 2003 - 10:30 #23
nåh jeg vil lukke det jeg fatter ikke lige...
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