MySQL: Välja ordnigsföljd påinläggen

Tråden skapades och har fått 5 svar. Det senaste inlägget skrevs .
1
  • Oregistrerad
  • 2004-02-18 17:46

Hejhopp!

Är på jakt efter en funktion där man kan välja och ändra ordningen på inläggen i presentationen av en databas. På något sätt måste ju databasen räkna om inläggen i den raden. Om jag ändrar så att inlägg nr 7 skall presenteras som nr 3 och övriga gammla inläggen 3-6 skall bli 4-7.

Tips mottages gärna.

ORDER BY foo ASC/DESC

  • Medlem
  • Stockholm
  • 2004-02-19 00:07

Jag tror att en vanlig lösning på problemet med ordnade och om-ordnade listor är ett lägga in ett indextal i tabellen. Då kan du till exempel ge fyra poster värdena 10, 20 30 och 40. Vill du sedan få in den sista posten som nummer två istället byter du indexvärdet från 40 till 15, osv. Det här kan man självklart fixa så det sker automatiskt.

  • Oregistrerad
  • 2004-02-19 18:25

Det där med att lägga på en nolla och sedan använda den som sortering verkar vara en lösning. Sedan är det bara att loopa upp så det blir en nolla igen efter den sorteringen. Skall kolla upp vad "ASC/DESC" är för något. Men tack för tankarna.

/Peo

Ursprungligen av Per-Olof Rupp:

Det där med att lägga på en nolla och sedan använda den som sortering verkar vara en lösning. Sedan är det bara att loopa upp så det blir en nolla igen efter den sorteringen. Skall kolla upp vad "ASC/DESC" är för något. Men tack för tankarna.

ASC - Ascending, dvs. stigande sorteringsordning, DESC - Descending, dvs. fallande. SQL-raden ovan talar helt enkelt om för din databas att sortera det som hämtas efter fältet foo, antingen stigande eller fallande.

Ett förtydligande i sammanhanget är att en databas i stort sett aldrig sparar något färdigsorterat (det kan säkert finnas någon som gör det, men ingen jag känner till). De data som matas in hamnar oftast i just den ordningen de matas in och ingen sortering ändrar på de interna datastrukturerna i databasen. Därför är grundregeln att om man vill ha ut data i någon viss ordning måste man alltid be om data i en viss ordning. Alltså, istället för att bara skriva SELECT * FROM table, vilket levererar alla poster i den ordning de råkar ligga måste man skriva SELECT * FROM table ORDER BY field (samt ev. ASC eller DESC).

Sedan måste man ju förstås ha något fält där man kan lagra ett värde för sorteringsordningen enligt tidigare inlägg och innehållet i det fältet får man manipulera med hjälp av någon lämplig kod på sidorna som anropar databasen.

/Göran

  • Oregistrerad
  • 2004-02-20 00:06
Ursprungligen av Göran Bolinder:

ASC - Ascending, dvs. stigande sorteringsordning, DESC - Descending, dvs. fallande. SQL-raden ovan talar helt enkelt om för din databas att sortera det som hämtas efter fältet foo, antingen stigande eller fallande.

Ett förtydligande i sammanhanget är att en databas i stort sett aldrig sparar något färdigsorterat (det kan säkert finnas någon som gör det, men ingen jag känner till). De data som matas in hamnar oftast i just den ordningen de matas in och ingen sortering ändrar på de interna datastrukturerna i databasen. Därför är grundregeln att om man vill ha ut data i någon viss ordning måste man alltid be om data i en viss ordning. Alltså, istället för att bara skriva SELECT * FROM table, vilket levererar alla poster i den ordning de råkar ligga måste man skriva SELECT * FROM table ORDER BY field (samt ev. ASC eller DESC).

Sedan måste man ju förstås ha något fält där man kan lagra ett värde för sorteringsordningen enligt tidigare inlägg och innehållet i det fältet får man manipulera med hjälp av någon lämplig kod på sidorna som anropar databasen.

/Göran

Ok. Men behövs ASC? Sorteras den inte valda raden automatiskt efter stigande om man inte väljer DESC?

Hur som helst, tack för svaret!

1
Bevaka tråden