webForum webForum sponsras med lina och serverplats av Binero AB

Gå tillbaka   webForum > Utveckling > Programmering & Utveckling > Databashanterare & SQL

Databashanterare & SQL Diskussioner om databashanterare och SQL. Exempelvis DML, DDL, MySQL, MS SQL Server samt datamodellering.

Svar
 
Trådverktyg Visningsalternativ
Äldre 2008-05-27, 09:28   #1
Hyzac
Medlem
 
Registrerad: 2004-03-03
Ort: Jönköping
Inlägg: 75
Lösningar: 2
Lista sidträd

Jag har en tabell som består av sidor med id, name och parent. Den refererar alltså sig själv när det kommer till undersidor. Jag skulle vilja få en sorterad lista som listar sidorna i ordningen:

id namn pId
1 sida1 0
2 usida1 1
3 sida2 0

Den hämtar alltså först en parent sida och sedan dess barn och sedan nästa parent-sida osv.

Tack på förhand
Hyzac besöker inte forumet just nu   Svara med citat
Äldre 2008-05-27, 09:54   #2
spango
Medlem
 
spangos avatar
 
Registrerad: 2000-06-02
Ort: Söders höjder
Inlägg: 6 147
Lösningar: 759
Går inte med standard-SQL. Du får antingen göra en rekursiv funktion som hämtar ut från databasen eller någon DBMS-specifik rekursiv query.
__________________
Vissa dagar är man asfalten, andra dagar är man ångvälten.
Vissa dagar är man myggan, andra dagar är man vindrutan.

XML är som våld; löser det inte ens problem betyder det att man använder för lite.
spango besöker inte forumet just nu   Svara med citat
Äldre 2008-05-27, 10:20   #3
LarsG
Medlem
Årets medlem 2001
 
Registrerad: 2000-12-03
Ort: Uppsala
Inlägg: 12 465
Lösningar: 959
Jo, om databasen har stöd för with så går det med standard sql. Finns i t.ex. SQL server och DB2.
__________________
essentitia preter non sans multiplicandum
LarsG besöker inte forumet just nu   Svara med citat
Äldre 2008-05-27, 10:26   #4
Hyzac
Medlem
 
Registrerad: 2004-03-03
Ort: Jönköping
Inlägg: 75
Lösningar: 2
Det är SQL 2005 som jag jobbar i. Har kollat lite på det här med with men får inte till det.
Så här långt har jag kommit:

Kod:
WITH mSiteMap (Parent, Id, Title, Level)
AS
(
    SELECT e.Parent, e.Id, e.Title, 0 AS Level
    FROM SiteMap AS e
    WHERE Parent = 0
    UNION ALL
    SELECT e.Parent, e.Id, e.Title, Level + 1
    FROM SiteMap AS e
	INNER JOIN mSiteMap AS s
		ON e.Parent = s.Id
)
SELECT Parent, Id, Title, Level
FROM mSiteMap
Men den ordnar det bara i nivåerna, alltså först kommer nivå 0 sen 1, sen två
inte 0, 1, 1.1, 1.2, 2, 2.1 osv

Senast redigerad av Hyzac, 2008-05-27 klockan 10:49
Hyzac besöker inte forumet just nu   Svara med citat
Svar
webForum > Utveckling > Programmering & Utveckling > Databashanterare & SQL

Trådverktyg
Visningsalternativ

Forumregler
Du får inte posta nya trådar
Du får inte posta svar
Du får inte bifoga filer
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG]-kod är av
HTML-kod är av

Forumhopp


Alla tider är i GMT +1. Klockan är nu 19:21.


Powered by: vBulletin Version 3.8.6
Copyright © webForum