webForumDet fria alternativet

Halvknepig sortering...

5 svar · 396 visningar · startad av Travoni

TravoniMedlem sedan okt. 20041 556 inlägg
#1

Tabell: Bilar

id : relid : namn
1 : 0 : Coupé
2 : 0 : Kombi
3 : 0 : Lastbil
4 : 0 : Van
5 : 1 : Volvo s80
6 : 2 : Volvo 745
7 : 4 : Dodge Ram
8 : 3 : LT 31
9 : 2 : Volvo 945 GLT
10 : 1 : Saab 9000i

Nu skulle jag vilja sortera dem så här:

Coupé
Saab 9000i
Volvo s80

Kombi
Volvo 745
Volvo 945 GLT

Lastbil
LT 32

Van
Dodge Ram
Alltså, först "kategori" sedan modellen i bokstavsordning.
Hur gör jag det?

Engine^Medlem sedan dec. 20003 887 inlägg
#2

Du borde börja med att dela upp tabellen i två tabeller. En för fordon och en för fordonstyp.

@ndersMedlem sedan juni 200032 969 inlägg
#3

Jag håller med Engine^ i sak, men det går ju att lösa genom att joina tabellen med sig själv.

SELECT T2.Namn AS Kategorinamn, T1.Namn as Bilnamn [...] FROM Bilar T1 
INNER JOIN Bilar T2 ON T1.relid = T2.id 
ORDER BY T2.Namn, T1.Namn
LarsGMedlem sedan dec. 200012 464 inlägg
#4

Den joinen innebär att du inte får med de som har relid 0. Det behövs ingen join heller

select <kolumner>
   from bilar
order by case when relid = 0 then id else relid end, id
@ndersMedlem sedan juni 200032 969 inlägg
#5

Den joinen innebär att du inte får med de som har relid 0. Det behövs ingen join heller

Jag kanske missuppfattade frågan? Om vi inte har en join, då får vi ju inte ut kategorinamnen? Och 0:orna har vi väl med som T2.Namn i de bilar som har 0 som parent har någon post med relid 0 som parent?

TravoniMedlem sedan okt. 20041 556 inlägg
#6

LarsGs variant sorterade bara efter id:t.

Kan tillägga att min databas är en mySql 5.0

129 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
127 ms — hämta tråd, inlägg och bilagor (db)