这条sql语句为什么在tquery控件里不能执行呢?(50分)

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

crodling

Unregistered / Unconfirmed
GUEST, unregistred user!
“select id,allcount=count(*) from (select * from t1 union select * from t2) a where a.score>=80 group by a.id”我在sql查询分析器里面可以运行这句,放到tquery控件的sql属性里面就说我语句有误。请教一下是为什么呢?

t1表结构:

id score

t2表结构也一样
 
你用的是什么数据库,可能是你的sql语句不支持delphi的本地数据库,
(query的sql属性只支持本地数据库)
你动态的写应该是没问题
 
好象没见过allcount=count(*) 这种写法哦
是不是应该:count(*) allcount

另:本地有好象不支持子查询
 
如果你的sql语句由数据库执行的话, 能否执行要看你用的数据库是否支持;
(如:sql server?跟 oracle的有些语句就不一样)
 
allcount=count(*)
没见过这种写法.
count(*) as allcount
or
count(*) allcount
 
allcount=count(*)
没见过这种写法.[^]
 
把QUERY源码贴出来。
一般是你源码格式没写号。
 
对,这样是不行的,如果真要写,这样写!
select distinct a.id as id ,b.allcount as allcount from a ,(select * from t1 union select * from t2) a,(select count(*) as allcount from (select * from t1 union select * from t2) a where a.score>=80 group by a.id) b
where a.score>=80 试试,没测试,应该可以,思路已提供
 
Declare @Allcount int
select @allcount = count(*) from ...
 
好像使用 Count 之后不能再选别的字段
 
我先前是在sql server里面查询分析器执行那句语句的;
我建表类型使用的是paradox7;

to 雪鹰:我是直接在tquery的控件的sql属性里设置的,源码就是贴出来的那点东东

现在的问题在于union语句
我光是使用“select * from t1 union select * from t2”便可以在tdbgrid控件中显示
合成表
但是现在我想加上“select id,count(*) as allcount from a,(select * from t1 union
select * from t2) a group by a.id”它就死都不肯显示,老跳一窗口说什么
“invalid use of keyword
Token:select
line number:1”
 
to BDFan
这里使用了group by id,所以我认为这里实际上是对每一个重复id数目进行count
 
这句太乱了:
select id,count(*) as allcount from a,(select * from t1 union
~~
select * from t2) a group by a.id
~~~
from后干吗两个a表???
是不是想这样?:
select id,count(*) as allcount from (select * from t1 union
~~
select * from t2) a group by a.id


 
select id,count(*) as allcount from yourtable
我个人认为理论上是无法实现的!!!!!!!!!

count 返回的是一个统计的值
id 返回的是 yourtable 的一个field

 
to 雪鹰, 恩,
select id,count(*) as allcount from (select * from t1 union
~~
select * from t2) a group by a.id
我就是想实现这样的结果出来

但是现在还不行
 
table1如下
id score
1 78
2 89
3 85
table2:
id score
1 87
2 78
3 74
连接成table3
id score
1 78
1 87
2 89
2 78
3 85
3 74
也就是想得到这样的结果,每个id的优良科数有几门
select id,count(*) from table3 where score>=80 group by id

请问各位有什么办法处理的?
 
你那段代码是直接双击query的sql属性,在弹出的sql对话框,全选那句sql语句,复制,
然后粘贴到bbs上来的吗?
我是担心里面你有不小心写错的符号什么的。
 
如果只想得到每个id的优良科数有几门,可以试试这个:

select id,count(id) count1 from
(select * from t1 where score>=80 union select * from t2 where Score>=80) a
group by a.id
 
没有一个是正确答案,我回答给我100好吗
 
to book523, 你的代码我试过了,还是不行

魔鬼大师,只要你答案正确,我可以再给你50分
 

Similar threads

后退
顶部