这是非常奇怪的查询,我不知道如何处理它。 以下是表格。如何为下表编写postgres查询?
id descendentId attr_type attr_value
1 {4} type_a
2 {5} type_a
3 {6} type_a
4 {7,8} type_b
5 {9,10} type_b
6 {11,12} type_b
7 {} type_x TRUE
8 {} type_y "ABC"
9 {} type_x FALSE
10 {} type_y "PQR"
11 {} type_x FALSE
12 {} type_y "XYZ"
输入相关的查询将是1,2,3
..输出应该"ABC"
。
逻辑是 - 从1,2,3
开始通过后代ID循环,直到达到attr_type x
。如果attr_type x
达到了7,9和11,那么检查哪一个是true
。对于例如7
是真的,那么 得到它的兄弟type_y
(检查第4行),这是8
并返回它的值。
所有这些都是字符串格式。
'descendentId'的数据类型是什么? –
如果你保存一个'parentId'而不是这样(这样,你甚至可以使用一个自引用外键)。 – pozs