order by case kategori
when 'huvudkat' then 0
when 'blandat' then 1
when 'data' then 2,
titel asc
mvh
Databaser & SQLur Databashanterare & SQL
5 svar · 534 visningar · startad av bassebhu
Hallå!
Jag har en tabell där jag sätter kategorivärden för poster. När jag hämtar dessa så vill jag sortera dem efter kategorivärdet, men kan inte sortera med vanliga "ORDER BY kategori ASC" eftersom jag vill ha en bestämd ordning. Jag vet att man kan lägga kategorier i en egen tabell och ge dem numeriska sorteringsvärden, men det är så få så jag tänkte skippa det och jag vill inte heller ge dem kategorinamn i alfabetisk ordning.
Går det att köra nåt sånt här:
"ORDER BY kategori('huvudkat','blandat','data'), titel ASC"
D.v.s. först alla poster i huvudkat i titel-bokstavsordning, sedan alla i blandat och sen i data...
Tack!
order by case kategori
when 'huvudkat' then 0
when 'blandat' then 1
when 'data' then 2,
titel asc
mvh
Hurra! Tack! Funkar!
Hittade nåt annat precis som var såhär, men det stod att det var dåligt, är det det? :)
Deras värden i kopierade exemplet...
ORDER BY FIELD(order_status,'shipped','waiting','open')
Varför skulle det vara dåligt menar du?
Jag känner inte till just den metoden - jag kan ju inget om mysql. :)
Det var nån jeppe här som sa så :)
http://pabloj.blogspot.se/2006/11/custom-ordering-for-your-results.html
Det låter som att den enda anledningen till att det är kass är att det inte är standard sql - inte att resultatet på något sätt skulle bli sämre.
Jag hade nog ändå valt sättet med case, även om jag inte har något emot det andra.
Mvh