CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  MS-SQL Server >  疑难问题

高手请进,问查询方法!

楼主hanjing999(hanjing999)2002-11-18 16:10:08 在 MS-SQL Server / 疑难问题 提问

现在有这样的关系图:  
                                  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

相关问题

  • 请大家进来讨论一下关于数据库查询速度和方法的问题
  • 请问如何用tadotable来查询,它没有setkey方法呀
  • 请问:关于对分段数据的查询方法
  • 单表SQL查询特别慢,请问解决方法?
  • 多表的查询问题(求解决方法)
  • 高难度问题:查询天气的方法?~
  • 讨论一个Query查询方法的问题
  • 关于一种查询语句方法的问题
  • 求sql查询方法
  • access查询问题,请进!

关键词

  • 逻辑
  • 结构
  • 内容
  • null
  • upid orid
  • dnid
  • ha b ia
  • fb null cb c jc
  • 方法
  • 数据表内容

得分解答快速导航

  • 帖主:hanjing999
  • j9988

相关链接

  • SQL Server类图书

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo