01. juli 2008 - 06:32Der 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?
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)
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";
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.