各路英雄帮帮忙。。。偶好头疼。。。:(

swind0826 2003-08-14 01:21:35
VC操作Access数据库的问题。
有两个表
表A
A.Aid(自动编号) A.Name
表B
C.Cid(C表的主键,数字,有重复) A.Aid(数字,对应A表,有重复) Order(数字,有重复)
在表B中,相同Cid的记录,Aid是不重复的,Order也不重复
现在,想查询表B中指定Cid的记录的A.Name。(即查询对应指定Cid记录中的A.Aid的A.Name)
我的语句是:
方法1.
strSQL.Format("Select \
A.Name \
From [A]
Where A.Aid In \
(Select A.Aid From [B] Where Cid = XXX)");
m_pDaoRecordset->Open(dbDynaset,strSQL);
方法2.
strSQL.Format("Select \
A.Name \
From [A]Inner Join B On A.Aid = B.Aid
Where Cid = XXX \
Order by B.Order");
m_pDaoRecordset->Open(dbDynaset,strSQL);

现在遇到问题了,在B表中,Cid值为XXX的记录,最少有3条,且Aid都与A表中的Aid对应。在使用这两种方法后,查询效果是一样的,结果集中只有一条数据(当给出的XXX为B表中第一行记录的Cid时),或者是为空集(给出的XXX不与前一个条件不同时)。但我期望的结果集,应该是所有与"B.Cid=XXX"的记录中Aid对应的A.Name。(注:我所说的“在B表中的第一行”,是用Access直接打开B表时看到的)

真不知道是在哪个环节出了问题,请各位哥哥、姐姐、叔叔、阿姨、爷爷、奶奶。。。。英雄们在这里指点我一下,多谢了!!!!
...全文
30 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
swind0826 2003-08-14
  • 打赏
  • 举报
回复
to nomenn(西风瘦马)
(你用
select A.name
from A,B
where
B.Cid=xxx and
A.Aid=B.Aid;

试试???)
:),谢谢,这个的结果也是一样的。我想问题不会是出在SQL的语句上的,不知道在access数据库中,有什么原因会导至这种情况。。。。比如表A的Aid是主键,值都是唯一的,而表B的Aid虽然相同Cid的记录它不会重复,但就这个字段本身来说,它是可以重复的,不知道这会不会有影响?

to ZouMorn(风前横笛斜吹雨):谢谢:)
to wangjinwang(王进):的确是不止一条记录,而且我还换过几批数据试过!

孤必有邻 2003-08-14
  • 打赏
  • 举报
回复
再好好想想,是不是确实只有一条记录符合条件
ZouMorn 2003-08-14
  • 打赏
  • 举报
回复
强烈建议你用查询设计器设计以后再用到程序中。

例如 vb, .net 等都有。

nomenn 2003-08-14
  • 打赏
  • 举报
回复
你用
select A.name
from A,B
where
B.Cid=xxx and
A.Aid=B.Aid;

试试???
swind0826 2003-08-14
  • 打赏
  • 举报
回复
我单独用
Select Name Form [A]

Select B.Aid From [B] Where Cid = XXX Order by B.Order

这两条语句都没有问题,结果集都是正常的。
swind0826 2003-08-14
  • 打赏
  • 举报
回复
呵呵,郁闷了几天,搞定了。。。。。哇哈哈。。。。。。:)
谢谢各位的支持!接分!
jennifergiant 2003-08-14
  • 打赏
  • 举报
回复
up
zerphy 2003-08-14
  • 打赏
  • 举报
回复
up一下,目前没看出什么明堂。

4,012

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 数据库
社区管理员
  • 数据库
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧