用TQUERY组件可以实现SQL视图功能吗?

nationphone 2000-06-09 12:48:00
在数据库应用中,经常需要进行一些复杂的查询,这些查询往往很难由一个SELECT语句求出,
因为TQUERY的SQL不支持建立视图,我通常是先用TTABLE的BATCHMOVE生成几个中间表,然后再用查询,这样有一个严重的缺陷,因为中间表在硬盘上生成速度很慢,如果有类似SQL视图或能在内存中生成中间表的方法,则可以大副提高速度,可是我始终找不到可行的办法因为TQUERY不能从别的数据集上取得数据,而TCLIENTDATADSET又不支持SQL查询,苦坏我了.
不知哪位有良方?可否赐教?
...全文
134 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
lfzheng 2001-09-28
  • 打赏
  • 举报
回复
halfdream(哈欠), 你说清楚一些嘛,我就是仿照SQL SERVER 里的SQL 语句写的,但是出错,
我的结构如下:
Query1->SQL->Add("create view myview1 as select id,name,age from man");
但是提示"capability not supported Token view"!
你知道怎么解决这个问题吗?拜托了!

halfdream 2000-06-09
  • 打赏
  • 举报
回复
当然是可以的。
不能用过滤。因为那是客户端的东西。这时数据已经被提取到客户端,用过滤只是显示与否的问题。
你可以创VIEW 再从以前创建的基本表或VIEW 中SELECT 嘛。

nationphone 2000-06-09
  • 打赏
  • 举报
回复
首先谢谢你的回答.
我后来的问题是,如果我想在我前面已有的查询结果上继续查询,可以吗?比如我用TTABLE的FILTER特性过滤了某个表,现在我想在这个过滤的基础上用SQL分类汇总,我在SQL中如何引用前面的结果呢?
我摸索了很久,但没找到方法.
一个数据集能够在另一个数据集的基础上操作吗?
halfdream 2000-06-09
  • 打赏
  • 举报
回复
你先在SQL Explorer 中输入SQL 语句试试,如果成功了更加入TQUERY。 我刚试过的, BDE+Access 是可以支持VIEW的。
Clone 跟VIEW 是完全的两码事。 从C/S 的角度看,VIEW 是服务器端提供的一种服务。
创建一个VIEW:
Create view myview1 as select id,name,age from man

一旦建立起VIEW后,这时可以
select * from myview1

我不大清楚 你后来问的是什么,不过如果你能理解, 那是都可以解决的。
nationphone 2000-06-09
  • 打赏
  • 举报
回复
还有,你说读VIEW数据同读出基本表 的数据方法完全一样,这时在SQL中如何指定前一数据集的结果集的名字,这个名字是?难道是前一个数据集的名字?
nationphone 2000-06-09
  • 打赏
  • 举报
回复
是啊,我就是用SQL语句建视图,数据库是office ACCESS,但老是出错,你能给个例子吗?(我用的是BCB 3.0) ,此外我说的TClientdataset是指它的CLONE功能,不是和建视图有些接近吗?
halfdream 2000-06-09
  • 打赏
  • 举报
回复
你是对TQUERY 还不熟吧。
怎么不能建视图?而且你未必需要在TQUERY中建立VIEW。
建立视图只要在TQuery 中写入 建立视图的SQL语句, 然后execSQL() 就行了吧。

就算假如不能建立视图, TQuery中读出VIEW数据同读出基本表 的数据方法完全一样。

你的TClientDataSet 的用法也不对吧?

13,822

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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