TravoniMedlem sedan okt. 20041 556 inlägg 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 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 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 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
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 LarsGs variant sorterade bara efter id:t.
Kan tillägga att min databas är en mySql 5.0