如何进行联接查询(100分)

  • 主题发起人 主题发起人 cfjjj
  • 开始时间 开始时间
C

cfjjj

Unregistered / Unconfirmed
GUEST, unregistred user!
有一个数据库文件loan.dbf,我想进行多重条件的联接查询,SQL语句如下:
SELECT DISTINCT A.* FROM loan A,loan B WHERE A.borrowerco=B.borrowerco AND A.loandate=B.realmature AND A.loansum>=B.loansum
结果程序报错,后来将之改为
SELECT DISTINCT A.* FROM loan A,loan B WHERE A.borrowerco LIKE B.borrowerco AND A.loandate LIKE B.realmature AND A.loansum>=B.loansum
程序能够运行,但查7000条记录,在PIII700的机器上竟用了12分钟。
后来发现borrowerco、loandate、realmature字段为C型,loansum为N型;
若将loansum改为C型,再用第一条语句来运行,3秒钟就搞定了。
现在我既不想改变原数据库结构,又想快速完成此查询,该怎么改SQL语句?
请高手不吝赐教,我将献上100分!
 
select cast(loansum as CHARACTER(10)) from tablename where
CHARACTER(10)中的10指loansum的位数
 
我不是想问怎么改变字段类型,而是想知道如何修改我写的第一条语句来完成查询。
 
请建索引。
索引基本知识:
  数据库中的索引与书籍中的索引类似。在一本书中,利用索引可以快速查
找所需信息,无须阅读整本书。在数据库中,索引使数据库程序无须对整个表
进行扫描,就可以在其中找到所需数据。书中的索引是一个词语列表,其中
注明了包含各个词的页码。而数据库中的索引是一个表中所包含的值的列表,
其中注明了表中包含各个值的行所在的存储位置。可以为表中的单个列建立
索引,也可以为一组列建立索引;索引采用 B 树结构。索引包含一个条目,
该条目有来自表中每一行的一个或多个列(搜索关键字)。B 树按搜索关键字
排序,可以在搜索关键字的任何子词条集合上进行高效搜索。例如,对于一个
A、B、C 列上的索引,可以在 A 以及 A、B 和 A、B、C 上对其进行高效搜索。

  大多数书中包含一个关于词汇、名称、地点等等的总索引。数据库则包含
分别关于所选类型或数据列的索引:这好比在一本书中分别为人名和地名建立
索引。当创建数据库并优化其性能时,应该为数据查询所使用的列创建索引。

 
这分难道这么不好拿吗?
 
你的A,B两个表是不是一样的啊!
 

我看不出你的第一条语句有什么错

能将错误代码贴出来吗?
 
我已经不太记得correlated query 语法,但是给你一个general idea:
SELECT DISTINCT A.*
FROM loan A
WHERE A.loansum >(select B.loansum
from Loan B
where
A.borrowerco = B.borrowerco
AND A.loandate = B.realmature )

 
TO:吴向球 我的A、B两张表其实是同一张表,A、B只是别名。
TO:sonie 就是第一条SQL语句有错,DELPHI说是什么数据保护错误,我以前看过
SQL语法,说是WHERE后的两个相比较的条件字段类型必须一致,但没
说过所有用AND连接的字段类型都必须一致。不知为什么。
TO:redhat2000 您老写的语句我也想到过,可是A、B实际是同一张表,这样查询出
来的结果与三个条件并列查询出来的结果不一致,所这样查询不行。

TO:everyone 这几天大富翁一直连不上,没有及时与大家沟通,对不起!
 
活马当做死马医,加个括号试试:
SELECT DISTINCT A.* FROM loan A,loan B WHERE (A.borrowerco=B.borrowerco) AND (A.loandate=B.realmature) AND (A.loansum>=B.loansum)
delphi报的错?sql报的吧.
 
接受答案了.
 
接受答案了.
 

Similar threads

S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
915
SUNSTONE的Delphi笔记
S
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部