![]() |
|
|
|||||||
| Databashanterare & SQL Diskussioner om databashanterare och SQL. Exempelvis DML, DDL, MySQL, MS SQL Server samt datamodellering. |
![]() |
|
|
Trådverktyg | Visningsalternativ |
|
|
#1 |
|
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
|
|
|
|
|
|
#2 |
|
Medlem
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. |
|
|
|
|
|
#3 |
|
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 |
|
|
|
|
|
#4 |
|
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
inte 0, 1, 1.1, 1.2, 2, 2.1 osv Senast redigerad av Hyzac, 2008-05-27 klockan 10:49 |
|
|
|
![]() |
| Trådverktyg | |
| Visningsalternativ | |
|
|