CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  数据库

↑〓◆※ 菜鸟提问,关于多表查询, 谢谢参与 ※★▲↓

楼主wltsui(-无招胜有招-)2002-12-19 11:12:13 在 VC/MFC / 数据库 提问

有4个表,    
  table1   ID1     ........  
  table2   ID2     ........  
                          ID1    
  table3   ID3     ........  
                          ID2  
  table4   ID4       ........  
                          ID3  
   
  意思是说在表table4中有一个字段的内容指向是在表table3,    
  而在表table3中有一个字段的内容指向是在表table2,  
  而在表table2中有一个字段的内容指向是在表table1。  
   
  我现在知道表table1中的ID1,   我要得到所有的table4的ID4是包括在table1中!  
   
   
  问题点数:123、回复次数:24Top

1 楼wltsui(-无招胜有招-)回复于 2002-12-19 11:14:29 得分 0

不知道大家明白我的意思吗,   有数据库的高手快来帮忙!   关键是用sql怎么查询,   我用CDaoRecordset!Top

2 楼wltsui(-无招胜有招-)回复于 2002-12-19 11:25:37 得分 0

郁闷,   没有人知道吗?  
   
   
  救命呀!!Top

3 楼whorchid(*)兰花一现(*)回复于 2002-12-19 11:34:09 得分 30

用复合查询吧,   具体的忘了:  
   
  SELECT   *  
  FROM   table_name1  
  WHERE   EXISTS  
                      (SELECT   *  
                    FROM   table_name2  
                    WHERE   conditions)  
   
  ^_^  
   
  Top

4 楼wltsui(-无招胜有招-)回复于 2002-12-19 12:28:45 得分 0

高手都去哪了,   难道没有人知道吗??Top

5 楼wltsui(-无招胜有招-)回复于 2002-12-19 12:40:50 得分 0

我等到花儿也谢了!Top

6 楼wltsui(-无招胜有招-)回复于 2002-12-19 13:50:54 得分 0

引用   spwnihao(下岗职工)   的:  
   
  我也不知道能不能解决,谈一下自己的想法吧。  
  我看这是一个几个表的对应关系,好像是一对多,多对多的问题  
  如果用一个sql语句完成好象比较困难,如果分开处理的话就简单多了  
  m_pRecordset->Open("SELECT   *   FROM   table2   as   tbl2   table1   as   tbl1   where   tbl2.ID1   =   tbl1.ID1",(IDispatch*)m_pConnection,    
  adOpenDynamic,  
  adLockOptimistic,  
  adCmdText);    
  while(!m_pRecordset->adoEOF)    
  {  
            TheValue_ID2   =   m_pRecordset->GetCollect("ID2");  
            m_pRecordset2->Open("SELECT   *   FROM   table2   as   tbl2   table1   as           tbl1   where   tbl2.ID1   =   tbl1.ID1",(IDispatch*)m_pConnection,    
  adOpenDynamic,  
  adLockOptimistic,  
  adCmdText);    
            while(!m_pRecordSet->adoEof())  
            {  
                    ......  
            }  
            m_pRecordSet->MoveNext();  
   
  }  
   
   
  有人吗,   大家帮帮忙!   看一看,   发表一点点想法吧!  
   
  Top

7 楼coollzh(良子)回复于 2002-12-19 15:45:46 得分 10

搂主,能把你的问题在描述的详细一点吗?Top

8 楼pingguo_yu(MrApple)回复于 2002-12-19 16:12:27 得分 10

多表连接查询吗?select   talbe1.t1,table2.t2   from   table1   inner   join   table2   on   table1.t1=table2.t1   where   conditions.Top

9 楼zhenxizhou(东门行)回复于 2002-12-19 16:47:18 得分 10

建立四个表的视图。Top

10 楼wltsui(-无招胜有招-)回复于 2002-12-19 16:54:38 得分 0

to   zhenxizhou(追忆)  
      兄弟的意思是在数据库中建吗,   不怎么了解!Top

11 楼rafaelcn(飞扬)回复于 2002-12-20 08:58:30 得分 5

在数据库中建立视图其实也就是一个带   [inner|left   |   right]   join   子句的select   语句而已Top

12 楼zhang865(老人家慢走)回复于 2002-12-20 09:12:03 得分 5

sorry   ,  
  help   you   to   upTop

13 楼wltsui(-无招胜有招-)回复于 2002-12-20 09:50:32 得分 0

谢谢大家,   我就是不想建立视图,   有别的方法吗!Top

14 楼wltsui(-无招胜有招-)回复于 2002-12-20 10:26:16 得分 0

真的这么难吗,   没有人能帮我吗!!  
   
   
   
  Top

15 楼whereisthedog()回复于 2002-12-20 10:48:24 得分 10

建立四个表的视图。这个办法多好啊??  
  Top

16 楼wltsui(-无招胜有招-)回复于 2002-12-20 11:14:44 得分 0

to   whereisthedog()   :  
      我知道是方便,   我是想不用视图怎么做呢!Top

17 楼zhaolaoxin()回复于 2002-12-20 11:15:59 得分 10

SELECT   *  
  FROM   t4   INNER   JOIN  
                      (SELECT   t3.id3,   t3.name3,   t3.id2  
                    FROM   t3   JOIN  
                                t2   ON   t3.id2   =   t2.id2)   at3   ON   t4.id3   =   at3.id3  
  WHERE   (at3.id2   =   22)Top

18 楼Panghuang(彷徨)回复于 2002-12-20 13:55:20 得分 5

如果table1的ID1是主键,table2的ID1是外键,而且其他的也一样,可以用以下的试试select   c.ID4   from   table2   a,table3   b,table4   c  
  where   a.ID2=b.ID2   and   b.ID3=c.ID3   and   a.ID=预知的ID值Top

19 楼wangzn1979(梦郎2003)回复于 2002-12-20 13:59:27 得分 5

能否把你设计表的思路说说,我看你说了那么多,不是狠了解你如何建表?Top

20 楼sdb72(小二)回复于 2002-12-20 14:10:04 得分 10

select   *   from   table1   where   exists   (select   *   from   table2   where   (table2.id1   =   table1.id1)   and   exits   (select   *   from   table3   where   table3.id2   =   table2.id2   and   table3.id1   =   table3.id1)....)Top

21 楼wltsui(-无招胜有招-)回复于 2002-12-21 09:28:40 得分 0

uuupTop

22 楼zq_benben(虚空)回复于 2002-12-22 09:38:26 得分 10

我用设置过滤的方法实现过多表查询,速度还可以了,不过就是有点麻烦  
   
  你可以试一下Top

23 楼wltsui(-无招胜有招-)回复于 2002-12-22 12:49:54 得分 0

to   zq_benben(虚空):  
    兄弟,   能不能提供源代码或思路,   万分感谢!~Top

24 楼rayhua(农夫山泉)回复于 2002-12-22 12:55:23 得分 3

gzTop

相关问题

  • 菜鸟提问!!!!!!!
  • 菜鸟提问。
  • !#!菜鸟提问:
  • 菜鸟提问!
  • 菜鸟提问:
  • 菜鸟提问:
  • 菜鸟提问………
  • 菜鸟提问
  • 菜鸟提问...
  • 菜鸟提问!!

关键词

  • 字段
  • 视图
  • 数据库
  • 查询
  • 内容
  • 表
  • tbl
  • precordset
  • table
  • 意思

得分解答快速导航

  • 帖主:wltsui
  • whorchid
  • coollzh
  • pingguo_yu
  • zhenxizhou
  • rafaelcn
  • zhang865
  • whereisthedog
  • zhaolaoxin
  • Panghuang
  • wangzn1979
  • sdb72
  • zq_benben
  • rayhua

相关链接

  • Visual C++类图书
  • Visual C++类源码下载

广告也精彩

反馈

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