Avatar billede crunch Nybegynder
03. maj 2001 - 19:26 Der er 15 kommentarer og
1 løsning

sortering af records...

hej.,

jeg leder efter en metode så jeg kan sortere følgende..

jeg henter 30 felter alá
SQL1 = \"SELECT r1, r2, r3, r4, r5, r6, r7, r8, r9 ,10, r11, r12, r13, r14, r15, r16, r17, r18, r19 ,20, r21, r22, r23, r24, r25, r26, r27, r28, r29 ,30 FROM Browsere WHERE Id = 2\"


nu er det sådan at jeg gerne vil have dem udskrevet som følgende.

de skal sorteres sådan at hvis der er flere værdier skal de stå sammen som f.eks.


æbler          4
pærer          3
bananer        1
appelseiner    1


- hvordan ?
Avatar billede nute Nybegynder
03. maj 2001 - 19:29 #1
du skal bare sette på en ORDER BY:

SELECT r1, r2, r3 FROM Browsere WHERE Id = 2 ORDER BY r1 DESC

Du kan også sortere på flere kolonner:

SELECT * FROM Browsere WHERE Id = 2 ORDER BY r2 ASC, r1 DESC, r5 DESC

/nute
Avatar billede stigc Nybegynder
03. maj 2001 - 19:32 #2
det er vist ikke det han ønsker. Det er de enkelte felter i hver record der skal sorteres.
Avatar billede crunch Nybegynder
03. maj 2001 - 19:48 #3
nemlig..
så desværre
Avatar billede jens Nybegynder
03. maj 2001 - 20:06 #4
Tag den her:
<%

Set Conn = Server.CreateObject(\"ADODB.Connection\")
FilePath = Server.MapPath(\"database.mdb\")
Conn.Open \"Driver={Microsoft Access Driver (*.mdb)}; DBQ=\" & FilePath & \";\"

strSQL = \"SELECT DISTINCT Tekst FROM Tabel\"
Set RS = Conn.Execute(strSQL)

Do Until RS.EOF or RS.BOF

strSQL2 = \"SELECT Nummer FROM Tabel WHERE Tekst = \'\" & RS(\"Tekst\") & \"\'\"
Set RS2 = Conn.Execute(strSQL2)

Response.Write \"<BR>\" & RS(\"Tekst\") & \"<BR>\" & vbcrlf

Do Until RS2.EOF or RS2.BOF

Response.Write RS2(\"Nummer\") & \"<BR>\" & vbcrlf
RS2.MoveNext
Loop

RS.MoveNext
Loop


%>

Lav en count i den anden SQL sætning, og så skulle den være der.

Hilsen
Jens
Avatar billede crunch Nybegynder
03. maj 2001 - 20:20 #5
jeg forstår ikke helt hvad du mener med COUNT og jeg forstår heller ikke helt hvad:
SELECT DISTINCT Tekst FROM Tabel
gør...
gider du forklare mig det.
Avatar billede jens Nybegynder
03. maj 2001 - 20:28 #6
Hvis du har f.eks.

æbler
æbler
æbler
æbler         
pærer         
bananer
bananer
bananer       
appelseiner
appelseiner
appelseiner   

Så tager en SELECT DISTINCT frugt FROM Tabel

Alle frugter een gang, og overstående bliver så listet sådan

pærer         
bananer
appelseiner 

Det resultat udskriver vi så her:
Response.Write \"<BR>\" & RS(\"frugt\") & \"<BR>\" & vbcrlf


Så tæller vi hvor mange af hver der var:
SELECT Count(id) as antal WHERE frugt = \'\" & RS(\"frugt\") & \"\'

Og udskriver det:
Response.Write RS2(\"antal\") & \"<BR>\" & vbcrlf





Avatar billede crunch Nybegynder
03. maj 2001 - 20:34 #7
men alle mine værdier ligger jo vandret som: r1, r2, r3, r4, r5, r6, r7, r8, r9 ,10, r11, r12, r13, r14, r15, r16, r17, r18, r19 ,20, r21, r22, r23, r24, r25, r26, r27, r28, r29 ,30


hvordan kan
SELECT DISTINCT frugt FROM Tabel
tage alle værdierne henad  - vil den ikke kun kunne tage en række som f.eks. r14 ?
Avatar billede burningice Nybegynder
03. maj 2001 - 23:18 #8
well.. en anden måde at gøre det på er

set rs = conn.execute(\"Select * from [tabel] group by frugt

do until rs.eof
response.write rs(\"frugt\") &\" - \"& conn.execute(\"select count(*) as antal from [tabel] where (frugt = \'\"& rs(\"frugt\") &\"\')\")(\"antal\") &\"
loop
rs.movenext
Avatar billede crunch Nybegynder
03. maj 2001 - 23:33 #9
der eksisterer ikke en kolone der hedder \"frugt\" - værdierne er på langs og hele rækken skal udvælges udfra det felt (nedad) der hedder \"id2\"
- dit forslag forudsætter man kan udtrække alle værdierene fra samme felt henad. men det er altså nedad der er meningen...
Avatar billede chris Nybegynder
04. maj 2001 - 02:04 #10
crunch:
Du skulle ta\' og læse \"ASP For Beginners\" ?

Avatar billede crunch Nybegynder
04. maj 2001 - 09:06 #11
> chris
jeg synes faktisk det er et rimlig godt spørgsmål jeg har stillet. Indtil nu har ingen kunnet besvare det (inklusive dig)


problemet er at man ikke kan skrive:
SQL1 = \"SELECT r1, r2, r3, r4, r5, r6, r7, r8, r9 ,10, r11, r12, r13, r14, r15, r16, r17, r18, r19 ,20, r21, r22, r23, r24, r25, r26, r27, r28, r29 ,30 FROM Browsere WHERE Id = 2 sort by et eller andet\"..

- og indtil nu har jeg ikke set nogen der har svaret på en måde hvor alle mine værdier inkluderes.

- så drop de smarte kommentarer, hvis du ikke du ved noget.
Avatar billede crunch Nybegynder
04. maj 2001 - 09:10 #12
fordi der findes kun én værdi i hver felt.
Avatar billede jens Nybegynder
04. maj 2001 - 09:18 #13
Ja, du må undskyld, men jeg forstår heller ikke dit spørgsmål - f,eks. \"værdier ligger jo vandret som..\" Men måske der er en anden der kan løse dit problem.

Held og lykke med det :-)
Avatar billede erikjacobsen Ekspert
04. maj 2001 - 09:32 #14
Det er faktisk ikke så tosset et forslag at henvise dig til en bog - men det skulle
nu være en bog om databasedesign. Du burde have en ekstra tabel, hvor dine
data ligger \"lodret\" i stedet for \"vandret\". Så ville vi kunne lade SQL-maskinen om
arbejdet. Nu skal det gøres i ASP - men ok, det kan vi da godt:

<%

  \' lav din SQL-forespørgsel og få et recordsæt rs

  dim a(30)

  for i=1 to 30
    a(i) = rs(\"r\" & i)
  next

  for i=30 to 2 step -1
    for j=i to 30
      if a(j-1)>a(j) then
        tmp=a(j-1):a(j-1)=a(j):a(j)=tmp
      end if
    next
  next

  gammel=\"\"
  antal=0
  for i=1 to 30
    if a(i)<>gammel then
      if gammel<>\"\" then
        response.write gammel & \"  \" & antal & \"<br>\"
      end if
      gammel=a(i)
      antal=0
    end if
    antal=antal+1
  next
  if gammel<>\"\" then
    response.write gammel & \"  \" & antal & \"<br>\"
  end if
%>
Avatar billede chris Nybegynder
04. maj 2001 - 19:53 #15
crunch: ja, du kan godt kalde mig \"smart\", men fact er at du ikke selv aner hvad du snakker om.

sætninger som :
\"hvordan kan
SELECT DISTINCT frugt FROM Tabel
tage alle værdierne henad  - vil den ikke kun kunne tage en række som f.eks. r14 ? ....\"

og

\"jeg forstår ikke helt hvad du mener med COUNT og jeg forstår heller ikke helt hvad: ....\"

og denne

\"der eksisterer ikke en kolone der hedder \"frugt\" - værdierne er på langs og hele rækken skal udvælges udfra det felt (nedad) der hedder \"id2\" dit forslag forudsætter man kan udtrække alle værdierene fra samme felt henad. men det er altså nedad der er meningen...
\"

Fuldstændigt sort snak.....
Hvis du vidste bare lidt om SQL/ ASP ville du måske kunne forklare hvad du snakker om.
Hvorfor jeg skrev at du skulle læse en bog (eller på nettet) om det var i gang med, var ikke en smart kommentar,.... hvordan tror du vi andre har lært det.
Avatar billede crunch Nybegynder
05. maj 2001 - 12:44 #16
tak erik  - og i andre der kom med løsningsforslag.
Det var lige noget sådant jeg mente.

Jeg ved godt det er en lidt alternativ konstruktion jeg har lavet men det er fordi jeg har en masse brugere der har en masse værdier der hele tiden udskiftes så jeg kan ikke komme på andre måder at konstruere det på, samtidig med at jeg skal have alle værdier i kun én instans.

det kan godt være jeg lige skulle kigge på en db bog men jeg har simpelt hen ikke tid fortiden og det jeg laver kører fint med næsten 1000 brugere, så jeg jeg lærer noget når jeg har behovet og her er eksperten fint til at finde svar...
(:


- og chris, du bidrager ikke med noget... så jeg gider ikke diskutere \"hvem\" der kan \"hvad\" med dig.
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