这是我正在学习的课程的“解决方案”。但是当我将它复制到我的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
就像我说的,这不是我的代码。对于我参加的课程提出的问题,这是一个“解决方案”。我正在尝试解决这个问题,但是不想从这个代码的原意上移开得太远。
欢呼声 - 雅克布斯
首先感谢您的回答:)从什么我从你的回答中了解到,是第一位:(安科,十二月)是必需的,这对我来说是完全合理的。第二个对我来说最初没有意义,“只有在工会电话会议之后递归”,但我想我现在明白了。问题仅在第三个联合区块中。我将如何解决这个问题,尤其是在“一次呼叫限制”方面? – PlatinTato
为了回答你的问题,我应该知道'父母'表,从你的角度来看,我不清楚。这是'(孩子,父亲,母亲)'吗?那么,'name'是什么?或者(名字,孩子,父亲,母亲)?然后,我不会看到什么是孩子。 – Renzo
我现在看到另一个我在问这个问题时似乎忽略了的错误。它是(小孩,父亲,母亲),名字也应该是小孩。设计这个课程的人在他的所有Powerpoint节目中都命名为“名字”,但他分享的文件名为“孩子”。我在问题中编辑。 – PlatinTato