Bezpośredni potomek, Nested set, Postrgres

0

Hej!

Implementuję sobie nested set na bazie Postgresa. Używam materiałów z http://dev.mysql.com/tech-resources/articles/hierarchical-data.html i pominąwszy drobne różnice - wszystko w miarę działa. Problem mam jednak ze stworzeniem zapytania zwracającego mi tylko bezpośrednich potomków danego elementu. Są sytuacje (zależne od podanego id kategorii), gdzie działa ok, gdzie działa źle albo nie zwraca nic.

mam tablicę categories, zbudowana jest bardzo prosto:

id | title | lft | rgt

Oto zapytanie zaczerpnięte z w/w materiałów i zmienione pod moją tablicę:

SELECT node.id, (COUNT(parent.id) - (sub_tree.depth + 1)) AS depth
FROM categories AS node,
	categories AS parent,
	categories AS sub_parent,
	(
		SELECT node.id, (COUNT(parent.id) - 1) AS depth
		FROM categories AS node,
		categories AS parent
		WHERE node.lft BETWEEN parent.lft AND parent.rgt
		AND node.id = 48
		GROUP BY node.id, node.lft
		ORDER BY node.lft
	)AS sub_tree
WHERE node.lft BETWEEN parent.lft AND parent.rgt
	AND node.lft BETWEEN sub_parent.lft AND sub_parent.rgt
	AND sub_parent.id = sub_tree.id
GROUP BY node.id, sub_tree.depth, node.lft
HAVING depth = 1
ORDER BY node.lft;

O dziwo nie działa mi w ogóle próba "ograniczenia" selecta w WHERE do potomków tlyko z depth = 1, wyświetlają się wszyscy potomkowie.

Może macie jakieś lepsze rozwiązanie?

1 użytkowników online, w tym zalogowanych: 0, gości: 1