情况是这样的:(Postgresql)
表A:
------------
| a_id |
------------
表B:(表A的分组)
----------------------------
| b_id | a _id[] |
----------------------------表C:
-------------
| c_id |
-------------
表D:(表C的分组)
----------------------------
| d_id | c_id[] |
----------------------------表E:
------------------------------------------------------------
| e_id | a_id[] | b_id[] | c_id[] | d_id |
------------------------------------------------------------其中 x[]表示数组苦思不得其解现在,已知 a_id,需要根据E表,来找出所有的 c_id。
描述是这样:select c_id from C where (select c_id,d_id where a_id='a_id' or a_id in b_id).总之我描述不出来了,混乱了。。
就是知道一个a_id, 先找出其b_id(可能有多条),然后查表E,找出a_id=a_id or b_id=b_id的记录。然后c_id就是c_id了,在把d_id变成c_id并加上前面查出来的c_id,就是最终要查的东东。谢谢
表A:
------------
| a_id |
------------
表B:(表A的分组)
----------------------------
| b_id | a _id[] |
----------------------------表C:
-------------
| c_id |
-------------
表D:(表C的分组)
----------------------------
| d_id | c_id[] |
----------------------------表E:
------------------------------------------------------------
| e_id | a_id[] | b_id[] | c_id[] | d_id |
------------------------------------------------------------其中 x[]表示数组苦思不得其解现在,已知 a_id,需要根据E表,来找出所有的 c_id。
描述是这样:select c_id from C where (select c_id,d_id where a_id='a_id' or a_id in b_id).总之我描述不出来了,混乱了。。
就是知道一个a_id, 先找出其b_id(可能有多条),然后查表E,找出a_id=a_id or b_id=b_id的记录。然后c_id就是c_id了,在把d_id变成c_id并加上前面查出来的c_id,就是最终要查的东东。谢谢
参考一下这个贴子的提问方式http://topic.csdn.net/u/20091130/20/8343ee6a-417c-4c2d-9415-fa46604a00cf.html
1. 你的 create table xxx .. 语句
2. 你的 insert into xxx ... 语句
3. 结果是什么样,(并给以简单的算法描述)
这样想帮你的人可以直接搭建和你相同的环境,并在给出方案前进行测试,避免文字描述理解上的误差。
a_id
1001
1002
1003B中数据:
b_id, a_id[]
2001 {1001,1003}
2002 {1002,1003}
2003 {1001}C中数据:
c_id
3001
3002
3003D中数据:
d_id, c_id[]
4001 {3002,3003}
4002 {3001,3003}
4003 {3002}E中数据:
e_id, a_id[], b_id[], c_id[], d_id[]
5001 {1001,1002} {2001,2002} {3001,3002} {4001,4002}
5002 {1002} {2003} {3003} {4003}比如,查寻a_id=1001,需要得出c_id={3001,3002,3003}
a_id=1003,~~~~~~~c_id={}