Подскажите, пожалуйста, каким образом использовать несколько WITH в одном запросе?
Или как по-другому возможно повторное обращение к результату выполнения подзапроса?
Неясно то, что вы пытаетесь сделать, потому что я полагаю, что это можно сделать проще: слишком уж операции банальные. Пробовать с 2-я подзапросами WITH сейчас не смогу, нет под рукой PostgreSQL, однако предложить решение в лоб можно:
Вместо all_deps2 или all_deps в тексте
Если я правильно понял
Если я правильно понял вопрос, то просто указываете имя выражения столько, сколько требуется.
Например:
Спасибо. Чего-то я себе,
Спасибо. Чего-то я себе, видимо, придумал. Теперь понятно.
Стоп Вот запрос: WITH
Стоп
Вот запрос:
WITH RECURSIVE all_deps(id, caption, parent_id)
AS
(
SELECT
deps.id,
deps.parent_id
FROM public.deps AS deps
WHERE deps.id = 34
UNION ALL
SELECT
deps.id,
deps.parent_id
FROM all_deps AS all_deps,
public.deps AS deps
WHERE deps.parent_id = all_deps.id)
--------------------
WITH RECURSIVE all_deps2(id, caption, parent_id)
AS
(
SELECT
deps.id,
deps.parent_id
FROM public.deps AS deps
WHERE deps.id = 43
UNION ALL
SELECT
deps.id,
deps.parent_id
FROM all_deps AS all_deps,
public.deps AS deps
WHERE deps.parent_id = all_deps.id)
---------------------
SELECT
*
FROM all_deps2 JOIN all_deps ON (all_deps2.id = all_deps.id )
Мне нужно поразному обработать Подчиненые элементы первого подразделения и второго, а результат вывести вместе. Почему-то ругается на второй WITH.
Неясно то, что вы пытаетесь
Неясно то, что вы пытаетесь сделать, потому что я полагаю, что это можно сделать проще: слишком уж операции банальные. Пробовать с 2-я подзапросами WITH сейчас не смогу, нет под рукой PostgreSQL, однако предложить решение в лоб можно:
Вместо all_deps2 или all_deps в тексте
вставьте свой длинный запрос как подзапрос, например:
Кстати, зачем вам там RECURSIVE?
RECURSIVE мну нужен для
RECURSIVE мну нужен для поиска подчиненных элементов.
Я может быть привел плохой пример. Суть вопроса в том, можно ли использовать WITH несколько раз?
Ларчик как обычно открывается
Ларчик как обычно открывается просто:
Просто, чтобы объявить ещё один WITH, нужно не писать это ключевое слово, а перед ним поставить запятую. Надеюсь, ты сможешь свой запрос переделать. Источник http://www.postgresql.org/docs/9.1/static/queries-with.html
Да. Спасибо.
Да.
Спасибо.