webForumDet fria alternativet

Sortering

Databaser & SQL

9 svar · 313 visningar · startad av kerouac

Medlem sedan nov. 200013 inlägg
Frågan#1

Jag har en Access-databas med ca 200 poster i. Databasen indexeras med hjälp av ett ID. Varje objekt har ett idnummer som ser ut så t.ex. så här : Ö-232, H-23, T-211. Ett problem jag har är att posternas sorteras på ett sätt som jag inte tycker om. Eftersom det är en bokstav först sorteras de efter bokstaven och därefter med den första siffran i ID. Då kan sortering bli såhär: Ö-211, Ö-22, Ö-222. Jag skulle vilja att det blev såhär istället : Ö-22, Ö-211, Ö-222 dvs sortering efter enbart siffrorna. Kan man greja det?

// Niclas

Medlem sedan dec. 200012 464 inlägg
#2

select left(id,2),clng(mid(id,3)),*
  from t
 order by 1,2

------------------
essentitia preter non sans multiplicandum

Medlem sedan nov. 200013 inlägg
#3

Vart gör jag detta?

// Niclas

Medlem sedan dec. 200012 464 inlägg
#4

Det finns ett fönster där man kan ställa direkt sql-frågor.

------------------
essentitia preter non sans multiplicandum

Medlem sedan juli 200012 978 inlägg
#5

Du har ju fått den sortering du har begärt när du satte fältet till Text.
Du kan splittra fältet i två
En textdel med bokstaven och med tal för siffrorna
skapa ett index på de två fälten.
Eller gör som LarsG säger i sql strängen

------------------
GvdsSfdtTddv.

Medlem sedan nov. 200013 inlägg
#6

Jag sjrev in det här i SQL-rutan:

SELECT left(StugID,2), clng(mid(StugID,3)), *
FROM tblStuginfo_1
ORDER BY 1, 2;

Tyvärr så sa Access att det blev ett "Data type mismatch in criteria expression".

Medlem sedan dec. 200012 464 inlägg
#7

Ser alla stugid likadana ut? Dvs är det alltid två tecken + siffror?

kan du testa den här frågan

select clng(mid(stugid,3)) from tblStuginfo_1

annars är det ett alternativ som Lennart säger att dela upp det i två kolumner

------------------
essentitia preter non sans multiplicandum

Medlem sedan nov. 200013 inlägg
#8

Problemet är att alla ID inte ser likadana ut. I de flesta fall är det bokstav-siffror men ibland kan det även vara t.ex. Ö-210M . Det kluriga är att ta ut alla siffor ur ID. Man löser alltså inte problemet genom att dela upp i två kolumner. Tror ni att det går att lösa eller får man skippa sorteringen?

//Niclas

Medlem sedan dec. 200012 464 inlägg
#9

Jo det går, men i så fall måste du dubbellagra data. Du får behålla nuvarande stugid och sedan lagra inledande bokstäver för sig och siffran för sig.

Det skulle gå om man kan skriva egna funktioner i Access som man kan anropa från select-satsen, jag vet inte vilket stöd som finns i Access för sådant.

------------------
essentitia preter non sans multiplicandum

Medlem sedan maj 2001431 inlägg
#10

Sådant stöd finns. Men det går inte att använda funktionerna utanför Access, vi a t.ex. via ODBC/OLE DB.

------------------
En eller annan godbit från pannan

264 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
128 ms — deklarationer (db)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)
127 ms — ändringar (db)