verwendetes Datenbanksystem: MS SQL Server 2008
Ich erarbeite mir gerade anhand eines Nested Set SQL Tutorials eine DB und versuche nun das lese Statement in Linq umzuwandeln, aber das sieht nicht aus wie das handelsübliche SQL. Könnte mir jemand helfen?
SQL
SELECT n.name,
COUNT(*)-1 AS level
FROM tree AS n,
tree AS p
WHERE n.lft BETWEEN p.lft AND p.rgt
GROUP BY n.lft
ORDER BY n.lft;
Mein Ansatz:
var tree = from n in db.Categories
from p in db.Categories
where n.Lft >= p.Lft && n.Rgt <= p.Rgt
orderby n.Lft
select new
{
name = n.Name,
level = ""
};
Was mir also noch fehlt ist das "COUNT(*)-1 AS level" und das "GROUP BY n.lft" und ob der rest richtig ist, ist auch die Frage 😃
Danke im vorraus
Hallo,
kanns grad leider nicht testen, aber es könnte in etwa so aussehen:
var tree = from n in db.Categories
from p in db.Categories
where n.Lft >= p.Lft && n.Rgt <= p.Rgt
group n by n.Name into g
orderby g.Key
select new
{
Name = g.Key,
Level = g.Count()
};
Hallo Curse4Life,
aber das sieht nicht aus wie das handelsübliche SQL. Könnte mir jemand helfen?
Meinst du damit folgendes?
FROM tree AS n, tree AS p
Wenn ja, nennt sich das die Kurzschreibweise für CROSS JOIN.
Gruß
Michael