Avatar billede ferdinan Nybegynder
18. januar 2002 - 09:02 Der er 10 kommentarer og
1 løsning

Gruppere poster - Case

Jeg skal lave et udtræk fra en tabel som skal gruppere posterne efter et bestemt felt. Det er jo ikke svært men jeg skal ind i mellem grupperingerne skrive en overskrift.

De grupperes efter et felt i tabellen der hedder BilMaerke.

Kan det ikke lade sig gøre i en SQL med Case noget?

Det skal blive således:

Volvo
post
post
post

Saab
post
post
post

BMW
post
post
post

o.s.v.


ferdinan

Avatar billede torbenmelander Nybegynder
18. januar 2002 - 09:05 #1
Hvordan ser databasen ud ??? Hvilke felter ??? ER ikke helt sikker på at jeg forstår hvad du gerne vil ... kan du uddybe det ???
Avatar billede marit Nybegynder
18. januar 2002 - 09:07 #2
Du sørger for også at skrive BilMaerke ud. og se gør du i en select case dette:

select case rs(\"BilMaerke\")

case \"Volvo\"

response.write rs(\"post\")

case \"Saab\"

osv.

end select
Avatar billede nute Nybegynder
18. januar 2002 - 09:18 #3
marit >> hva skal det være godt for ? den måte du har skissert vil jo ikke gjøre annet enn å skrive alle poster ut...

ferdinan >> du skal benytte \'GROUP BY\' i din SQL...fx:

SELECT * FROM tabell GROUP BY bilmaerke

så vil du få alle merker gruppert, deretter kan du skrive dem ut gruppert
Avatar billede ferdinan Nybegynder
18. januar 2002 - 09:24 #4
>> marit

Hvis jeg så skal placere den ind i et loop er det så noget ala:

SQLquery = \"SELECT * FROM Biler\"
Set RS = Server.CreateObject(\"ADODB.Recordset\")
RS.Open SQLquery, myConn, 1, 3

WHILE NOT RS.EOF
select case rs(\"BilMaerke\")
case \"Volvo\"
response.write rs(\"post\")
case \"Saab\"

osv

end select
RS.movenext
WEND




ferdinan
Avatar billede ferdinan Nybegynder
18. januar 2002 - 09:26 #5
>>nute

Jeg vil jo gerne skrive en overskrift ind for hver gruppe....hvordan gør jeg det i loopet?


ferdinan
Avatar billede nute Nybegynder
18. januar 2002 - 09:30 #6
SQLquery = \"SELECT * FROM Biler GROUP BY BilMaerke\"
Set RS = Server.CreateObject(\"ADODB.Recordset\")
RS.Open SQLquery, myConn, 1, 3
bilMaerke = \"\"

WHILE NOT RS.EOF
  if( rs(\"BilMaerke\") <> bilMaerke ) then
    bilMaerke = rs(\"BilMaerke\")
    response.write bilMaerke & \"<br>\"
  end if
  response.write rs(\"post\")
  rs.movenext
WEND

/nute
Avatar billede marit Nybegynder
18. januar 2002 - 09:32 #7
ferdinan >> ja, men nute har også ret, det er bedst at sortere felterne først \"SELECT * FROM Biler ORDER BY bilmaerke\"

Forresten så vil du så have skrevet bilmærket ud en gang for hver post? For så vil jeg nok ikke bruge en select case. Så vil jeg nok bruge en ifsætning. Da den kun første gang at den kommer til teksten Volvo, skal skrive ud.
Håber at jeg forstår dig ret.

Avatar billede marit Nybegynder
18. januar 2002 - 09:37 #8
tjaa >> jeg var lige ved at skrive, men nute forstod vist spørgsmålet hurtigere. Han må hellere svare.
Avatar billede intrique Nybegynder
18. januar 2002 - 21:35 #9
Kunne du ikke lave en \"Type\" kolonne med feks Saab, Volvo osv osv. Sådan kunne du nemt sørge for det....
Avatar billede ferdinan Nybegynder
19. januar 2002 - 11:48 #10
>>nute

Du har oprettet en kommentar, og ikke et svar - og det var lige dte du skrev jeg kunne bruge :)


ferdinan
Avatar billede nute Nybegynder
19. januar 2002 - 11:50 #11
men så svarer jeg :)
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