это «решение» вопроса из курса, который я принимаю. но когда я скопировал его в мою программу postgrSQL 9.5.1, и он пронизан ошибками.Рекурсивный вызов в нерекурсивном заявлении
CREATE RECURSIVE VIEW Ancestor AS
((SELECT parents.child AS Dec, parents.father AS Anc
FROM windsor.parents)
UNION
(SELECT parents.child AS Dec, parents.mother AS Anc
FROM windsor.parents)
UNION
(SELECT parents.Father AS Anc, Ancestor.Dec As Dec
FROM windsor.parents,Ancestor
WHERE parents.child = Ancestor.Anc)
UNION
(Select parents.mother AS Anc, Ancestor.Dec As Dec
FROM windsor.parents, Ancestor
WHERE parents.child = Ancestor.Anc))
Он высказал ошибку в строке: 1, с синтаксисом для «AS». Посмотрев на несколько заявлений here и пытаемся некоторые вещи, казалось, как меняется его
CREATE RECURSIVE VIEW Ancestor(Anc,Dec) AS
работали, но теперь он выдает ошибку в первый раз, когда я пытаюсь вызвать Предок в команде FROM
. Ошибка на этот раз:
Error: rekursiver Verweis auf Anfrage „ancestor“ darf nicht in ihrem nicht-rekursiven Teilausdruck erscheinen
SQL Status:42P19
или в моем ломаном английском:
recursive call for "ancestor" mustn't be in a non-recursive part
, как я сказал, что это не мой код. это «решение» вопроса из курса, который я посещаю. Я пытаюсь исправить этот ответ, но не хочу отклоняться слишком далеко от первоначального намерения с помощью этого кода.
веселит - Якоб
Прежде всего спасибо за ответ :) от того, что я понял из вашего ответа, это то, что 1-й: требуется (Anc, Dec), что имеет для меня полный смысл. Второй из них не имел смысла для меня изначально, с «рекурсивным только ПОСЛЕ профсоюзного вызова», но я думаю, что я понял это сейчас. Проблема только в третьем блоке объединения. как бы я обошел это, особенно с «одним лимитом»? – PlatinTato
Чтобы ответить на ваш вопрос, я должен знать таблицу «родителей», которая, с вашего взгляда, мне не понятна. Это '(ребенок, отец, мать)'? Затем, что такое 'имя'? Или это («имя, ребенок, отец, мать»)? Тогда я не понимаю, что такое ребенок. – Renzo
Теперь я вижу другую ошибку, которую я, кажется, забыл, задавая этот вопрос. это (ребенок, отец, мать), и имя должно было быть ребенком. парень, который разработал этот курс, назвал его «имя» во всем своем шоу Powerpoint, но файлы, которые он поделил, назвали «child». я редактировал в вопросе. – PlatinTato