TravoniMedlem sedan okt. 20041 556 inlägg Skulle vilja spotta fram en menylista med id och parentid som skall sorteras efter ett sortorder-fält.
Men...sorteringen börjar om i varje ny "parent"
Tbl
----------------
id | parentid | linkname | sortorder
1 | 0 | Bilar | 1
2 | 1 | Volvo | 1
3 | 1 | Saab | 2
4 | 1 | Fiat | 3
5 | 0 | Moppar | 2
6 | 5 | PGO | 1
7 | 6 | Kymco | 2
DBMS är mysql 5
Här är min befintliga sql:
Select t1.id, CONCAT((SELECT REPEAT(' ', (COUNT(t2.parentid)))
FROM tbl t2
WHERE t2.parentid=t1.id), t1.linkname)
from tbl t1
Order by t1.parentid, t1.sortorder
Peter SMedlem sedan dec. 20025 483 inlägg Har du angivit ORDER BY sortorder?
TravoniMedlem sedan okt. 20041 556 inlägg Ja, visst men då sorterar den ju på alla med 1 först osv.
Den skall sortera efter parentid,sortorder
Men inte det heller för då kommer alla med parentid 0 först...
R/ Första inlägget redigerat.
Peter SMedlem sedan dec. 20025 483 inlägg Hur skall ovanstående resultat se ut?
TravoniMedlem sedan okt. 20041 556 inlägg Precis som jag visade i första inlägget...vill jag att det se ut. :)
aasahMedlem sedan mars 20034 471 inlägg Om det där är det önskade resultatet... hur ser då t1 och t2 ut?
TravoniMedlem sedan okt. 20041 556 inlägg t1 och t2 är ju samma tabell.
Nja, jag skulle nog vilja ha hjälp med hela sql:en.
aasahMedlem sedan mars 20034 471 inlägg Va? Nu fattar jag absolut ingenting? :q Du svarade ju Peter med att den tabellen var önskat resultat? :q
Men OK... Den tabell du visar är Tbl. Det är så t1 och t2 ser ut. Men om du vill ha ut det resultatet så räcker ju
SELECT * FROM Tbl;
så det utgår jag ifrån att du inte vill. Och hur ser i så fall önskat resultat ut?
Är det månne detta du vill ha ut? Sorterar först på parentid, sedan enligt sortOrder...
Select * from Tbl order by parentid, sortorder;
Ger
----------------
id | parentid | linkname | sortorder
1 | 0 | Bilar | 1
5 | 0 | Moppar | 2
2 | 1 | Volvo | 1
3 | 1 | Saab | 2
4 | 1 | Fiat | 3
6 | 5 | PGO | 1
7 | 6 | Kymco | 2
TravoniMedlem sedan okt. 20041 556 inlägg Ehhh, nej det är så här jag vill ha det:
Tbl
----------------
id | parentid | linkname | sortorder
1 | 0 | Bilar | 1
2 | 1 | Volvo | 1
3 | 1 | Saab | 2
4 | 1 | Fiat | 3
5 | 0 | Moppar | 2
6 | 5 | PGO | 1
7 | 6 | Kymco | 2
TravoniMedlem sedan okt. 20041 556 inlägg Jag får bara
1 | 0 | Bilar | 1
5 | 0 | Moppar | 2
2 | 1 | Volvo | 1
3 | 1 | Saab | 2
4 | 1 | Fiat | 3
6 | 5 | PGO | 1
7 | 6 | Kymco | 2
eller
1 | 0 | Bilar | 1
2 | 1 | Volvo | 1
6 | 5 | PGO | 1
5 | 0 | Moppar | 2
3 | 1 | Saab | 2
7 | 6 | Kymco | 2
4 | 1 | Fiat | 3
Alltså på parentid eller på sortorder(i felaktig ordning)
aasahMedlem sedan mars 20034 471 inlägg Det är ju Tbl rätt upp och ner: SELECT * FROM Tbl;
Om det nu är så att Tbl inte finns i databasen utan du vill ta fram den via en SQL-fråga så måste du tala om för oss hur de tabeller du vill använda för att bygga den ser ut. Dvs hur ser den tbl som du kallar t1 i din ursprungliga fråga ut?
Travoni skrev:
Ehhh, nej det är så här jag vill ha det:
Tbl
----------------
id | parentid | linkname | sortorder
1 | 0 | Bilar | 1
2 | 1 | Volvo | 1
3 | 1 | Saab | 2
4 | 1 | Fiat | 3
5 | 0 | Moppar | 2
6 | 5 | PGO | 1
7 | 6 | Kymco | 2
GladhMedlem sedan maj 20012 812 inlägg
aashah skrev:
Om det nu är så att Tbl inte finns i databasen utan du vill ta fram den via en SQL-fråga så måste du tala om för oss hur de tabeller du vill använda för att bygga den ser ut. Dvs hur ser den tbl som du kallar t1 i din ursprungliga fråga ut?
Är det inte så att tabell strukturen ser ut som exemplet, men datan ligger instoppad huller om buller, så posten "Bilar" har inte id:1 i databasen men kanske 8 och sedan så har "moppar" id:9 medans Fiat har id:10 osv osv..
de id:en som man ser i exemplet är på hittade värden, men fälten finns i tabellen.
Det enklaste sättet är att lägga ihop sortorder för din parent och dess barn, så det blir så här.
1 | 0 | Bilar | 1
2 | 1 | Volvo | 11
3 | 1 | Saab | 12
4 | 1 | Fiat | 13
5 | 0 | Moppar | 2
6 | 5 | PGO | 21
7 | 6 | Kymco | 22
Det är dock inte så dynamiskt, eftersom du just nu endast kan ha 9 Parents, sedan får du problem, eller så delar du upp de i 2 kolumner:
1 | 0 | Bilar | 1|0
2 | 1 | Volvo | 1|1
3 | 1 | Saab | 1|2
4 | 1 | Fiat | 1|3
5 | 0 | Moppar | 2|0
6 | 5 | PGO | 2|1
7 | 6 | Kymco | 2|2
Nu kan du sortera skriva ORDER BY [näst sista kolumnen], [sista kolumnen].
- M
TravoniMedlem sedan okt. 20041 556 inlägg Det var så jag tänke, tack!