SQL的小问题!救命!送分100(100分)

  • 主题发起人 主题发起人 lkpc
  • 开始时间 开始时间
L

lkpc

Unregistered / Unconfirmed
GUEST, unregistred user!
我想写这么一个语句:

select e4,count(e4) as te4 from (select e2,e4 from ee
group by e2,e4) group by e4

但提示语法错误,不知道是何原因?
意思是select from (数据集),此数据集来自一个查询。
 
是这个意思吧:

select e4,count(e4) as te4
from tableName
where (select e2,e4
from ee
group by e2,e4)
group by e4
 
Sorry ,这样才是:

select e4,count(e4) as te4
from tableName
where e4 in (select e2,e4
from ee
group by e2,e4)
group by e4
 
to Jiao_he:
select e4,count(e4) as te4
from tableName
where (select e2,e4
from ee
group by e2,e4)
group by e4

这里的tablename写什么?
我的意思是:(select e2,e4 from ee group by e2,e4)得到了一个数据集,
然后从这个数据集中再select e4,count(e4) as te4

 
你的SQL在ACCESS中通过,没问题,你可以试试,我试了没问题。
如果不放心,你可以稍加改动如下:
select e4,count(e4) as te4
from (select e2,e4 from ee group by e2,e4) tt
group by e4
给数据集指定一个别名可能会好一点儿,反正我是没问题。
建议:如果你是用SQL SERVER或ACCESS建库的话,用它们本身的查询生成器来验证,很有效
的喔,凌晨四点半给你回答问题,我都觉得有点神经病:P
 
select e4,count(e4) te4 from (select e2,e4 from ee
group by e2,e4) group by e4
将te4直接作为派生字段用.
 
to oceanwave & litte wing:
还是不行!

我用delphi5,数据库为access97,BDE连接。我感到是非常简单的问题,但总是报错!
希望大家帮忙
 
OK,你可以试试这样:
select e4,count(e4) as te4
from [select e2,e4 from ee group by e2,e4]. tt
group by e4
 
to oceanwave & ...:

我验证了一下,不行。
我现在用最简单的语句来试验,大家看看是否有问题:

select * from (select * from demo),在QUERY组件的SQL属性中写语句,然后
让其ACTIVE,就提示from语句错误!大家帮帮我!
 
1、你把你的语勉励放在SQL Explorer中试一下,我这什么问题都没有。
2、你把你的数据库升级成ACCESS2000的,ACCESS97有蛮多的问题。
SQL Explorer是不错的数据源管理调试工具,在左边树上选择你的数据源别名后,在右
有一个Enter SQL,你把语句放进去,点最右边一个闪电状的按钮,执行一下就知道了。
如果通你最后提的最简单的语句都通不过,就升级成ACCESS2000吧
 
为什么不用ADO? 用jet4.0吧!
 
取个别名吧,这么多e4,当然会出问题
 
to:lkpc
你还是用文字表达一下你想做的要求吧。

就像:select * from (select * from demo),这样的语句语法上就有问题。
这样的语句跟:select * from demo效果就一样嘛,何必搞得这么复杂(除非你想表达在两个数据表中找数据)。

******************************************

>这里的tablename写什么?
>我的意思是:(select e2,e4 from ee group by e2,e4)得到了一个数据集,
>然后从这个数据集中再select e4,count(e4) as te4

这里的tablename是指另一个数据表名(如果你想通过ee表中的数据表作条件最从另一个表中查找数据的话;

如果你只要上面的意思这样就可以:
select e4,count(e4) te4
from ee
group by e2,e4


 
能说说你到底想干什么?
你想实现什么?
 
语法有问题,是什么语法来的?你还是说说你想做什么?
 
我发现上面三位对这个问题审题不清,
to jiao_he:
lkpc只是想做一个子查询,后面他提的语句只是想从最简单的语句来验证一下是否有问题
你可以理解为:select * from (select * from table where 条件)加上where不显示子查询
的作用了吗?先看清题目吧。

lkpc的语句是没问题的,至少他的语句在ACCESS中是行得通,在SQL Explorer中也是行得通
的。问题不在他的语句是不是有问题,而是数据库对查询语句的兼容性问题,比如ACCESS,
或JET不同版本之间的查询语句的兼容性问题。
ACCESS、SQL SERVER、ORACL、PARADOX的SQL语法各有不同,所以可能在子查询中都有可
能出现可执行性的问题。
 
我举例说明一下:
比如销售流水帐:

顾客姓名 购物品种 购物时间
a 食品 2001.5.10
b 玩具 2001.5.11
c 书籍 2001.5.12
a 食品 2001.5.15
b 书籍 2001.6.8
c 书籍 2001.8.1

需要的统计结果:

购物品种 顾客人数
食品 1
玩具 1
书籍 2
注意:顾客人数—不是人次,即同一顾客购买相同品种只算一次,可以知道
某种商品到底有几位顾客喜欢!
应该比较清除了吧!大家帮忙了!
 
select 购物品种,Count(顾客姓名) as 购物次数 from
(select distinct 顾客姓名,购物品种 from 销售流水帐)
 
后退
顶部