webForumDet fria alternativet

Felaktig sortering (9, 8, 7, 10)

Databaser & SQL

12 svar · 393 visningar · startad av mattiasnordin

Medlem sedan maj 20012 080 inlägg
Frågan#1

Min fråga ser ut något liknande:

SELECT total_rating,  total_rating_build_date WHERE x = y ORDER BY total_rating DESC

Har för mig att man kunde skriva cdbl(total_rating) men då får jag ett felmeddelande. Är det någon som förstår mitt problem?

Jag vill alltså att sorteringen ska vara
10
9
8
4

Ej
9
8
4
10

Mvh
Mattias

Medlem sedan mars 2003772 inlägg
#2
SELECT total_rating,  total_rating_build_date WHERE x = y ORDER BY total_rating+0 DESC

mha +0 så borde den se fältet som numerisk och sortera i numerisk ordning.

Medlem sedan juli 20011 084 inlägg
#3

Jag hade ett liknande problem med min mySQL-databas, problemet låg i att det fanns en IFNULL() när man tog bort den så fungerade det igen.

Medlem sedan maj 20012 080 inlägg
#4

Jag får det fortfarande inte att fungera. Jag har provat alla exempel ovan. Hjälp...

Medlem sedan juni 2003372 inlägg
#5

Vilken datatyp är det på total_rating?

Medlem sedan maj 20012 080 inlägg
#6

Jag har provat flera olika datatyper. I början hade jag datatyp textfält (vilket inte var rätt!) men nu när jag har ändrat det till ett numeriskt fält så avrundas allt. Fältet måste kunna stödja två decimaler. 9,86 måste få vara ett giltigt värde. Nu får alla fält värdet 10...

Jag använder Access 2002 som databas.

????

Medlem sedan juni 200032 967 inlägg
#7

Skall man lagra tal skall man givetvis använda talfält. Det finns inställningar i Access där du bestämmer vilken sorts talfält det skall vara. Double / dubbel är vettig fältlängd, eftersom det är en decimaltalstyp.

Mvh

Medlem sedan maj 20012 080 inlägg
#8

Jag använder nu Numeriskt fält.

Har bytt fältlängd från "Integer" till "double" och då fungerar det som det skulle.

Detta är första gången jag har behövt byta default fältlängd. Är detta något som är ovanligt?

Jag tackar @nders och webForum för att jag fortfarande har mitt hår kvar !!!!!

Medlem sedan maj 20012 080 inlägg
#9

Kan man få databasen att automatiskt lägga på 00 siffror så att alltid sifferkombinationen består av 5 tecken?
Typ 10.00 eller 09.89 ?

Eller får jag skripta ihop detta?

Mvh
Mattias

Medlem sedan juni 200032 967 inlägg
#10

Ovanligt, och ovanligt, det beror på vad du ska lagra i fältet. Eftersom defaultinställningen är Långt heltal / Long, kan du bara lagra heltal i fältet, och ska du då lagra decimaltal får du byta fältlängd. Att det heter fältlängd kan tyckas vara lite förvillande, och jag håller med. Det borde vara två olika datatyper istället, exempelvis integer och float eller decimal. Så ser det ut i till exempel MySQL och Microsoft SQL Server.

Mvh

Medlem sedan juni 200032 967 inlägg
#11

mattiasnordin skrev:

Kan man få databasen att automatiskt lägga på 00 siffror så att alltid sifferkombinationen består av 5 tecken?
Typ 10.00 eller 09.89 ?

Eller får jag skripta ihop detta?

Mvh
Mattias

Lös det i applikationen, det är lättast. Om man använder ASP:

Response.write Right("0" & objRS("fältet"), 5)

Mvh,

Medlem sedan maj 20012 080 inlägg
#12

Tack !

Medlem sedan juni 200032 967 inlägg
#13

Varsågod. :)

256 ms totalt · 4 externa anrop · v20260731065814-full.868a69e5
123 ms — deklarationer (db)
0 ms — hämta statistik (cache)
129 ms — hämta tråd, inlägg och bilagor (db)
125 ms — ändringar (db)