Запрос группировать по максимальной глубине PostgreSQL Ltree? - PullRequest
0 голосов
/ 26 августа 2010

Я хочу запросить все продукты с именем "Shania Twain", но я хочу сгруппировать их только по дереву с самым глубоким nlevel .

Предполагая, что у меня есть таблицаследующее с именем categories

+---------------+---------------+---------------+
|id             |name           |tree           |
+---------------+---------------+---------------+
|1              |"Music"        |100            |
+---------------+---------------+---------------+
|2              |"Shania Twain" |100.1          |
+---------------+---------------+---------------+
|3              |"Artists"      |200            |
+---------------+---------------+---------------+
|5              |"Country"      |200.2          |
+---------------+---------------+---------------+
|6              |"Shania Twain" |200.2.4        |
+---------------+---------------+---------------+

Так, например,

SELECT MAX(cat.id),
       cat.name,
       MAX(cat.tree)
  FROM
       public.categories cat
 WHERE
       cat.name = "Shania Twain"
GROUP BY
       name
HAVING
       MAX(nlevel(cat.tree))

Проблема заключается в предложении HAVING, требующем логического выражения.Предложение MAX(nlevel(cat.tree)) вернет целое число.

Как мне поступить?

Заранее спасибо

Махмуд

1 Ответ

0 голосов
/ 26 августа 2010
SELECT
    cat.id
    cat.name,
    cat.tree
FROM
    public.categories AS cat
WHERE
    cat.name = 'Shania Twain'
AND
   NLEVEL(cat.tree) = (SELECT MAX(NLEVEL(tree) FROM public.categories WHERE cat.name='Shania Twain'))
...