T Travoni Medlem sedan okt. 2004 1 556 inlägg Frågan 29 aug. 2006 10:39 #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. 2000 3 887 inlägg Du borde börja med att dela upp tabellen i två tabeller. En för fordon och en för fordonstyp.
@nders Medlem sedan juni 2000 32 967 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
L LarsG Medlem sedan dec. 2000 12 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
@nders Medlem sedan juni 2000 32 967 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?
T Travoni Medlem sedan okt. 2004 1 556 inlägg LarsGs variant sorterade bara efter id:t.
Kan tillägga att min databas är en mySql 5.0