Avatar billede kroger Nybegynder
22. juli 2003 - 00:49 Der er 21 kommentarer og
1 løsning

SQl sortering af resultat

Jeg har lavet mit eget lille forum, og har et lille problem jeg skal have løst med sorteringen. Min select kode ser sådan ud:

Select * From topic WHERE forumid ='" & Request.Querystring("fid") & "' AND reference = 0 Order by id DESC

Problemet er at det skal sorteres efter id, men denne sortering skal også gå efter de poster der har reference = 1.

Nogen ideer?

På forhånd tak
Avatar billede twm Nybegynder
22. juli 2003 - 00:51 #1
I følge din select har dem med reference = 1 ingen relevans! de bliver ikke udvalgt.
Avatar billede askeb Nybegynder
22. juli 2003 - 00:53 #2
Select * From topic WHERE forumid ='" & Request.Querystring("fid") & "' AND reference = 0 OR reference = 1 Order by id DESC ??
Avatar billede askeb Nybegynder
22. juli 2003 - 00:57 #3
elller BETWEEN:
Select * From topic WHERE forumid ='" & Request.Querystring("fid") & "' AND reference BETWEEN 0 AND 1 Order by id DESC ??
Avatar billede kroger Nybegynder
22. juli 2003 - 00:57 #4
Måden jeg har bygget det op på er at hvis det er et oprindeligt spm bliver reference = 0, er det en besvarelse bliver reference = det oprindelige spm´s id. Man kan se i en kolonne hvor mange besvarelser der er, og grunden til den sortering jeg gerne vil have er at når der er besvaret et spm skal det listes øverst.

Håber det forklarer det lidt bedre
Avatar billede kroger Nybegynder
22. juli 2003 - 00:58 #5
Det med reference = 1, var lige en tankebøf fra mig...
Avatar billede twm Nybegynder
22. juli 2003 - 01:00 #6
Select * From topic WHERE forumid ='" & Request.Querystring("fid") & "' Order by id DESC, reference DESC ??
Avatar billede kroger Nybegynder
22. juli 2003 - 01:01 #7
Bliver alle referencerne så ikke listet?
Avatar billede askeb Nybegynder
22. juli 2003 - 01:03 #8
det var nok lidt nemmere hvis du havde to tabeller - en med spm. og en med besvarelser...
Avatar billede twm Nybegynder
22. juli 2003 - 01:03 #9
Jo, men jeg forstår ikke helt præcist hvilke data du ønsker at tage ud! :)
Hvilke reference værdier ønsker du der skal vises?
Avatar billede kroger Nybegynder
22. juli 2003 - 01:07 #10
I det der skal vises skal kun de oprindelige indlæg vises altså dem med reference = 0, men der skal sorteres efter alle posters id, for at indlæg der er besvaret kommer til at ligge øverst. Min ide til at opnå dette var at lave en select der kun hiver de poster frem der har reference = 0 , men sortere efter id fra alle poster, ligemeget hvad reference er.
Gjorde det det mere klart?
Avatar billede kroger Nybegynder
22. juli 2003 - 01:09 #11
En måde jeg tænkte på var måske at kopiere den id der bliver tildelt over i et andet felt og så bruge det til sortering, men ved ikke lige hvordan man kan gøre det
Avatar billede twm Nybegynder
22. juli 2003 - 01:15 #12
Så stemmer jeg helt klart for askeb´s forslag med at skilde dem ud i to tabeller!

El måske en join:
Select * From topic as a LEFT JOIN topic as b ON b.reference=a.id WHERE a.forumid ='" & Request.Querystring("fid") & "' AND a.reference = 0 AND b.forumid ='" & Request.Querystring("fid") & "' AND b.reference <> 0 Order by b.id DESC, a.id DESC

Den er ikke testet og jeg kan heller ikke huske om man kan joine på den samme tabel! :D
Avatar billede twm Nybegynder
22. juli 2003 - 01:16 #13
Du kan som du selv skriver også gemme id på det sidste svar indlæg i et felt. Hvilken database bruger du?
Avatar billede kroger Nybegynder
22. juli 2003 - 01:21 #14
MSSQL
Avatar billede askeb Nybegynder
22. juli 2003 - 01:23 #15
Jeg ved ikke helt hvorfor jeg kom til at tænke på arrays og jeg tror heller du kan bruge det til så meget men ideen er der...hvor du liige får titlen ind i linket må du selv regne ud ;) - tror min hjerne er lidt rådden i nat...

udtraek1 = "Select * From topic WHERE forumid = '" & Request.Querystring("fid") & "' order by id desc;"
set rs = conn.execute("udtraek1")

i = 0
do while not rs.eof
if rs("reference") <> 0 then
topic(i) = reference
else
topic(i) = id
end if
i = (i+1)

rs.movenext
loop

For t = 0 to Ubound(topic)
  Response.Write "<a href=""" & topic(t) & """>" & int(t+1) & "</a>"
Next
Avatar billede twm Nybegynder
22. juli 2003 - 01:24 #16
Du kan skyde en SELECT @@IDENTITY; efter du har lavet en insert og på den måde få det sidste autonum felt, som du skyder af med en update
Avatar billede kroger Nybegynder
22. juli 2003 - 01:25 #17
Prøver lige engang twm
Avatar billede kroger Nybegynder
22. juli 2003 - 01:30 #18
Det virker!! twm, du er fantastisk.
Avatar billede kroger Nybegynder
22. juli 2003 - 01:31 #19
Askeb tak for forslaget, men det her var lidt nemmere.
Spis evt. nogle vitaminer, så holder knolden længere :)
Avatar billede twm Nybegynder
22. juli 2003 - 01:41 #20
;) Tak for point!
Avatar billede askeb Nybegynder
22. juli 2003 - 02:09 #21
tak for tippet - og twm > virker det kun til MSSQL eller også MySQL?
- det kunne jo være at jeg kunne spare et par hjerneceller engang ;)
Avatar billede twm Nybegynder
22. juli 2003 - 10:46 #22
På MySQL hedder den:
SELECT LAST_INSERT_ID();

Held og lykke med den! ;)
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