Avatar billede mik789 Nybegynder
01. juli 2008 - 06:32 Der er 6 kommentarer og
1 løsning

ORDER BY på to kolonner

Jeg har et site med en masse artikler, der hver især henviser til en masse faglitteratur. For at vise henvisningerne har jeg en tabel med bogtitlerne, og disse skal præsenteres ordnet efter forfatter-efternavn, men hvis der er flere af samme forfatter, skal de samtidig ordnes efter årstal. Alle titler tildeles samtidig automatisk en ID ved auto-increement. Denne ID er samtidig primary key. Jeg har følgende query:

$queryRef = "select * from henvisninger where trim(leading '0' from replace(art_id,'.0','.')) = $artID order by forfattere, aar";

Denne kode virker ikke; titlerne ordnes udelukkende efter ID. Hvis jeg derimod dropper kolonnen "aar" fra query'en (altså bare: order by forfattere), får jeg titlerne ordnet efter forfater, men flere titler af samme forfatter ordnes så ikke efter årstal, men efter ID.

Hvorfor duer den første kode ikke? Er det fordi jeg vil have den til at ordne titlerne ud fra mere end én kolonne, eller er det fordi der i query'en indgår funktioner (trim og replace)?

Hvordan skal jeg fikse koden, så jeg får titlerne ordnet BÅDE efter forfatter og år?

//mik
Avatar billede mik789 Nybegynder
01. juli 2008 - 06:36 #1
skal lige have med at artID i koden ikke er bøgernes ID, men blot sikrer at der kun hentes de titler der indgår i den pågældende artikel (der hver har en unik artikel ID)
Avatar billede michael_stim Ekspert
01. juli 2008 - 08:56 #2
Har været ude for at man nogle gange skal præcisere sorteringen når der er flere kolonner. Prøv at skriv ASC eller DESC foran:
$queryRef = "select * from henvisninger where trim(leading '0' from replace(art_id,'.0','.')) = $artID order by forfattere ASC, aar ASC";
Avatar billede jarner Nybegynder
01. juli 2008 - 12:02 #3
måske et skud i tågen, ikke testet:

$queryRef = "select * from henvisninger where trim(leading '0' from replace(art_id,'.0','.')) = $artID GROUP BY forfattere order by aar";
Avatar billede mik789 Nybegynder
01. juli 2008 - 22:56 #4
tak :-)
prøver det af og melder tilbage
Avatar billede mik789 Nybegynder
31. oktober 2010 - 16:35 #5
jarner og michael_stim, læg svar, så jeg kan lukke
Avatar billede michael_stim Ekspert
01. november 2010 - 11:53 #6
Samler ikke på point, ellers tak.
Avatar billede mik789 Nybegynder
15. november 2010 - 06:21 #7
OK - tager dem selv.
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
Computerworld tilbyder specialiserede kurser i database-management

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