在Postgresql中进行多个查询 - 条件循环

时间:2014-02-20 09:59:44

标签: sql postgresql

首先我要说的是,在过去的两周里,我得到了几乎所有人的积极帮助(好吧不是全部......但我想也许有二十几个人评论过,而且几乎所有这些评论都是有用)。这真是太棒了,我认为它表明stackoverflow团队确实做了一些伟大的事情。谢谢大家!

现在有些人知道,我现在在校园工作,我必须使用Windows机器。 (我是唯一一个必须在这里使用Windows的人...... :()

现在我设法安装(确定,IT部门为我做了这个)并填充了一个Postgres数据库(这是我自己做的),大约有400 MB的数据。对于大多数沉重的Ppostgre用户来说,这可能不是那么多,但我更习惯于sqlite数据库供个人使用,这种情况很少超过2mb。

无论如何,抱歉这么健谈 - 现在来自该数据库的查询工作 很好。我实际上使用ruby来做查询。

Postgres数据库中的条目是相互关联的 “指针” - 它们有一个指向另一个字段的字段。

实施例: 条目3667指向条目35785,指向条目15566.所以它很简单。

主条目为1,因此所有这些查询的结尾为1.因此,从任何其他数字开始,我们最终可以达到1作为最后一个结果。

我正在使用ruby对数据库进行尽可能多的单独查询,直到返回的最后一个结果为1.这最多可能需要10个单独的查询。我通过使用我的密码和数据登录psql,然后通过-c执行SQL查询来完成此操作。这可能不太理想,需要一点时间来执行这些登录和查询,理想情况下我只需要登录一次,在Postgres中执行所有查询,然后退出结果(所有这些条目都是结果)。

现在我的问题出现了: - 有没有办法在Postgres内部进行条件查询?

我知道如何在shell脚本和ruby中执行此操作,但我不知道这在postgresql中是否可用。

我需要用英文字母来表达查询:

“请给我所有指向父条目的条目,直到最后找到的条目最终为1,然后返回所有这些条目。”

我已经通过使用ruby进行多次查询来“解决”它,直到最终返回1,但这让我感觉相当不优雅,可能无效。

非常感谢任何信息 - 谢谢!

编辑(唉,我在粘贴时失败了......):

示例数据集,表格如下:

 id |       parent
----+---------------+
  1 |             1 |
  2 |        131567 |
  6 |        335928 |
  7 |             6 |
  9 |             1 |
 10 |        135621 |
 11 |             9 |

我希望这有效,我试图仅仅根据例子缩小范围。

例如,id 11指向id 9,id 9指向id 1。

如果可以使用SQL返回它会很棒: 11 - > 9 - > 1

1 个答案:

答案 0 :(得分:2)

除非您提供一些示例表定义,否则您要求隐约地提醒可以使用递归查询操作的树结构:http://www.postgresql.org/docs/8.4/static/queries-with.html