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

这样的sql该怎么写

楼主benh(滴答)2006-06-01 09:53:50 在 其他数据库开发 / Access 提问

table1:   Id,   EnglishString,   GermanString  
  table2:   Id,   EnglishString  
  目的:从table1中找出所有与table2的EnglishString匹配的string,连同相应的GermanString.  
  问题:直接用table1.EnglishString=table2.EnglishString速度较快,但是无法识别大小写。  
              若用StrComp()可以识别大小写,但是速度很慢。  
  想法:先用table1.EnglishString=table2.EnglishString检索出大小写不敏感的所有项目,然后  
              再用StrComp()进一步判断。以提高效率。  
  这种情况下,sql如何写好呢?  
  问题点数:40、回复次数:15Top

1 楼wwwwb()回复于 2006-06-01 09:59:56 得分 20

将表及要求结果贴出来看看Top

2 楼wangtiecheng(不知不为过,不学就是错!)回复于 2006-06-01 10:00:46 得分 20

将“table1.EnglishString=table2.EnglishString检索出大小写不敏感的所有项目”作为子查询,然后在此基础上作查询:再用StrComp()进一步判断Top

3 楼wwwwb()回复于 2006-06-01 10:06:41 得分 0

TRY:  
  SELECT   *   FROM   (  
  SELECT   *   FROM   TABLE1,TABLE2   WHERE   table1.EnglishString=table2.EnglishString)   WHERE   STRCOMP(table1.EnglishString,table2.EnglishString,0)=0;  
  Top

4 楼benh(滴答)回复于 2006-06-01 10:12:26 得分 0

SELECT   talbe1.ID,   table1.English,   table1.German  
  FROM   table1  
  WHERE   table1.English   IN         //这里怎么加上StrComp(table1.English,   子查询结果,0)   =0        
                      (SELECT   table1.English  
                        FROM   table1,   table2  
                        WHERE   table1.English=table2.English);  
  就是在子查询和上层查询中都需要做一下判断,且只在自查询有结果时候,才进行下一步查询。Top

5 楼benh(滴答)回复于 2006-06-01 10:14:25 得分 0

wwwwb(),你的例子里面,是   (SELECT   *   FROM   TABLE1,TABLE2   WHERE   table1.EnglishString=table2.EnglishString)   先执行是吗?Top

6 楼wwwwb()回复于 2006-06-01 10:23:46 得分 0

是   (SELECT   *   FROM   TABLE1,TABLE2   WHERE   table1.EnglishString=table2.EnglishString)   先执行是吗?  
  YES  
  简化一点:  
  SELECT   *   FROM   TABLE1,TABLE2   WHERE   table1.EnglishString=table2.EnglishString   and   STRCOMP(table1.EnglishString,table2.EnglishString,0)=0;  
  Top

7 楼wangtiecheng(不知不为过,不学就是错!)回复于 2006-06-01 10:35:11 得分 0

--先在子查询(select   *   from   table1   inner   join   table2   on   table1.englishstring=table2.englishstring)   as   T1   中限定并检索出大小写不敏感的所有项目。  
   
  然后在子查询的基础上比较englishstring的大小写。  
   
  select   *    
  from   (select   *   from   table1   inner   join   table2   on   table1.englishstring=table2.englishstring)   as   T1  
  where   strcomp(table1.englishstring,table2.englishstring,0)=0Top

8 楼benh(滴答)回复于 2006-06-01 11:21:24 得分 0

谢谢两位。遇到了新问题。  
  在query的sql   view下编辑StrComp()得不到正常的结果:  
  单独用的StrComp(),不用table1.englishstring=table2.englishstring的情况下,不能得到任何结果。但是如果只用table1.englishstring=table2.englishstring,是可以得到不区分大小写的结果的。直接用StrComp(),就不行。奇怪的是,在另外一个query中,直接用StrComp(),也可以正常工作。  
  关于StrComp为什么没能正常工作,请问有什么建议吗?  
  或者,sql执行时候,能调试一下吗?Top

9 楼wwwwb()回复于 2006-06-01 11:26:59 得分 0

上传MDB到WWW.ACCESS911.NET/CSDNTop

10 楼benh(滴答)回复于 2006-06-01 11:42:00 得分 0

已经上传db1.mdb到WWW.ACCESS911.NET/CSDN,请帮忙看看。Top

11 楼wwwwb()回复于 2006-06-01 14:27:44 得分 0

是哪二个表?try:  
  SELECT   *  
  FROM   test_source,test1  
  WHERE   test_source.Fruit=test1.English   And   StrComp([test_source].Fruit,[test1].[English],0)=0;  
  Top

12 楼benh(滴答)回复于 2006-06-01 15:09:11 得分 0

wwwb(),是另一个query,Query8_strcomp里面的语句,在用且只用strComp时候,完全不能检索出符合条件的内容。而在Query8_query_test,也就是你列举的这个query里,用StrComp是可以完成任务的。Top

13 楼wwwwb()回复于 2006-06-01 15:30:55 得分 0

可以    
  try:  
  SELECT   GermanSource.English,   ProjectStrings.English,   GermanSource.German  
  FROM   GermanSource,   ProjectStrings  
  WHERE   GermanSource.English=ProjectStrings.English  
  and   StrComp(trim(GermanSource.English),trim(ProjectStrings.English),0)=0;Top

14 楼wangtiecheng(不知不为过,不学就是错!)回复于 2006-06-01 15:35:57 得分 0

原来是空格的问题!Top

15 楼benh(滴答)回复于 2006-06-01 16:01:13 得分 0

果然如此,多谢两位。Top

相关问题

关键词

得分解答快速导航

  • 帖主:benh
  • wwwwb
  • wangtiecheng

相关链接

  • CSDN Blog
  • 技术文档
  • 代码下载
  • 第二书店
  • 读书频道

广告也精彩

反馈

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