11. november 2005 - 12:58Der er
39 kommentarer og 1 løsning
Sortering af dataudtræk?
Hej eksperter :)
Jeg sidder med en ejendomsmægler side, som selvf. har en liste med ejendomme. Den liste er sorteret efter postnumre. Nu skal jeg så lave sådan man selv kan bestemme hvordan man vil sortere den liste. F.eks. lad os sige der findes følgende postnumre:
8800 8900 9000 9100 9200
Så skal jeg kunne bestemme at øverst i listen, skal der listes ejendomme med postnummer "9000" og så skal resten af listen ellers bare komme.
du kynne måske gøre brug af union, dvs. sammensætte to selects, hvor den første udvælger alle rækker med postnr 9000 og den anden vælger alle de række som ikke har postnr 9000.
Eksempel:
select * from tabel where postnr = 9000 union select * from tabel where postnr != 9000 order by postnr
!= er en java/oracle ting. Så vidt jeg kan se bør fennecs virke, men hvis du også vil have de følgende sorteret så de ligger efter hinanden tror jeg du må gøre noget lignende det her: select * from ( select 1 as sort, * from dinTabel where post=9000 union select 2 as sort, * from dinTabel where post<>9000) order by sort, post
Umiddelbart ved jeg ikke hvorfor der skal selected på 1 og 2, så jeg ville bare foreslå at du benytter min blot med den ændring at du benytter <> i stedet for !=...
Ja, jeg må os nok indrømme at jeg ik forstår det med select 1 og 2. Men nu prøvede jeg med din sql sætning, bare med <> i stedet for !=. Det resulterede i følgende fejl:
---------------- Microsoft JET Database Engine error '80040e07'
Data type mismatch in criteria expression. ----------------
Med sql sætning:
sql = "SELECT * FROM bolig WHERE postnr = '9000' UNION SELECT * FROM bolig WHERE postnr <> '9000' ORDER BY postnr"
Du skal bruge sort metoden. sql = "select 1 as sort, * from bolig where postnr=9000 union select 2 as sort, * from bolig where postnr<>9000 order by sort"
Order by virker nemlig på ALLE select i en union, og den blander resultaterne.
hmm... jeg sidder lige og tester union i en access-database og jeg synes ærlig talt ikke den returnerer det jeg forventer!? Jeg har prøvet at sætte parantes omkring de to selects og det bliver lidt bedre, men stadig ikke som forventet...
sql = "(SELECT * FROM bolig WHERE postnr = '9000') UNION (SELECT * FROM bolig WHERE postnr <> '9000' ORDER BY postnr)"
Ifht. den fejl du får, er postnr så en streng/tekst og ikke et nummer?
fennec > Jeg kan nok ik give jer den database jeg sidder med. Men jeg kan kopiere tabellen "bolig" + data i en ny database og smide et link til jer, så i kan teste lidt? :)
oldPost = "" set rs = conn.execute("...") while not rs.eof then if oldPost <> rs("postnr") then response.write rs("postne") &" "& rs("city") &"<br>" end if response.write rs("bolig") &"<br>" oldPost = rs("postnr") rs.MoveNext wend
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.