高手请进,问查询方法!
现在有这样的关系图:
A
/ \
/ \
/ \
/ \
B & C & D 或 F
/ | |
/ | |
H或I J K
写成逻辑表达式为:
A=B&C&D | F | H&C&D | I&C&D | B&J&D | B&C&K | H&J&D | I&J&D | H&C&K | I&C&K | B&J&K | H&J&K | I&J&K
求解:如何从结构图中得到现在的表达式?
结构图的数据表内容是:
upid orid dnid
------------------
A 1 B
A 1 C
A 1 D
A 2 F
B 1 H
B 1 I
C 1 J
D 1 K
希望变成的数据表内容为:
orid id
----------
1 B
1 C
1 D
2 F
3 H
3 C
3 D
4 I
4 C
4 D
5 B
5 J
5 D
6 B
6 C
6 K
7 H
7 J
7 D
8 I
8 J
8 D
9 H
9 C
9 K
10 I
10 C
10 K
11 B
11 J
11 K
12 H
12 J
12 K
13 I
13 J
13 K
问题点数:100、回复次数:11Top
1 楼hanjing999(hanjing999)回复于 2002-11-18 16:18:26 得分 0
结构图的数据表内容中B 1 I写错了,应该是:
upid orid dnid
------------------
A 1 B
A 1 C
A 1 D
A 2 F
B 1 H
B 2 I
C 1 J
D 1 K
其实逻辑这个逻辑式子是:
A=(B&C&D) | F
B=(H | I)
C=J
D=K
Top
2 楼linhaibo(美洲豹)回复于 2002-11-19 08:46:00 得分 0
没看懂是什么意思,,,麻烦写清楚一些啊,用途是什么呢?Top
3 楼j9988(j9988)回复于 2002-11-20 08:23:50 得分 0
实际上你的公式是:
(B+H+I)(C+J)(D+K)+F
表要改为:
upid orid dnid
A null B
A B H
A B I
A NULL F
B NULL C
B C J
C NULL D
C D K
这样用我昨天给你方法稍修改一下,就可以了!Top
4 楼j9988(j9988)回复于 2002-11-20 08:27:05 得分 0
面对更复杂的公式:
(A+B+C)(D+F*(G+H+I))*(J+K+L+M)+(N+O)(P+Q+R)
也可以如上设计.Top
5 楼hanjing999(hanjing999)回复于 2002-11-20 13:36:50 得分 0
这样设计表应该是有问题的。因为如果有很多的层次呢?不可能加上很多字段吧!
upid orid dnid
A null B
A B H
A B I
A NULL F
B NULL C
B C J
C NULL D
C D K
Top
6 楼j9988(j9988)回复于 2002-11-20 14:16:28 得分 0
这实际上也是一个树状结构。
跟你原来的:
upid orid dnid
------------------
A 1 B
A 1 C
A 1 D
A 2 F
B 1 H
B 1 I
C 1 J
D 1 K
区别不大。Top
7 楼j9988(j9988)回复于 2002-11-20 14:45:52 得分 100
不过,这种也容易生成结果,如果晚上不上班再做.
upid orid dnid
------------------
A 1 B
A 1 C
A 1 D
A 2 F
B 1 H
B 1 I
C 1 J
D 1 K
Top
8 楼sky_blue(蓝天2007)回复于 2002-11-20 15:28:22 得分 0
用二叉树描述会更清楚
与则兄弟,或则子孙Top
9 楼j9988(j9988)回复于 2002-11-20 18:25:12 得分 0
想了想难写,用这种方法,与 sky_blue(老衲) 相反,或则兄弟,与则子孙。就好做了:
upid orid dnid
A null B
A B H
A B I
A NULL F
B NULL C
B C J
C NULL D
C D K
Top
10 楼hanjing999(hanjing999)回复于 2002-11-21 14:09:33 得分 0
谢谢,j9988(j9988) 如有时间,给我推荐一本关于数据结构的好书好吗。Top
11 楼lizongqi(英雄啊)回复于 2003-04-24 17:13:31 得分 0
UPTop




