首先我要说的是,在过去的两周里,我得到了几乎所有人的积极帮助(好吧不是全部......但我想也许有二十几个人评论过,而且几乎所有这些评论都是有用)。这真是太棒了,我认为它表明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
答案 0 :(得分:2)
除非您提供一些示例表定义,否则您要求隐约地提醒可以使用递归查询操作的树结构:http://www.postgresql.org/docs/8.4/static/queries-with.html。