请帮忙,一个不复杂的问题。(50分)

  • 主题发起人 主题发起人 hcl
  • 开始时间 开始时间
H

hcl

Unregistered / Unconfirmed
GUEST, unregistred user!
我现有一个数据表。(Tmptj)
Name(字符型) RMEMO(字符型) TS(数值型)
**姓名*** ***状态***** **天数****
李先生 出勤 6
李先生 出差 5
李先生 请假:事假 3
李先生 请假:病假 3
李先生 缺勤 13
李小姐 缺勤 30
张先生 出勤 16
张先生 出差 5
张先生 请假:事假 1
张先生 缺勤 8
想利用查询语言得到以下结果:
**姓名*** **出勤天数** **出差天数** **请假天数** **缺勤天数**
李先生 6 5 6 13
李小姐 0 0 0 30
张先生 16 5 1 8
注:其中请假天数包括(请假:事假,请假:病假)
请问怎样才能实现这样的功能,最好是要有源码。在些先谢了。
祝大家周二愉快!!
 
重新设计你的数据库表吧
 
这么简单的数据查询你都不自己做?浪费大家的时间!
 
select distinct name,
(select sum(ts) from table where RMEMO='出勤'),
(select sum(ts) from table where rmemo='出差'),
(select sum(ts) from table where rmemo like '请假%'),
(select sum(ts) from table where rmemo='缺勤')
from table
 
TO:Brave这种方法在SQL中不能执行。
对上面的问题补充一下:我采用的ACCESS数据库利用BDE联接的。
 
感谢楼上的朋友的光临。
但问题的实质一点点都没有解决。
请详细看我的要求。
礼。
 
TO:eric.youbin
你好这问题很简单吗?
有料的写一段代码出来给大家看一看,如能解决此问题一定加高分。
如果你是无能的话,请你离开。
祝你走好!
 
TO:yxyyyy
你好?
不重新设计表,不行吗?
我想应该可以的,只手头上还没有找到好的SQL帮助信息。知不知那个网站或者什么书上
对SQL语言的详细说明呢?
我想一定能行的。等一等。
祝你好运?
 
distinct、like、子查询在Access中可以用,我的SQL错误在哪?
 
最好重新设计表。
 
不要对回答的答案一下子就否定,看看我的创建表的语句
create table tmptj(Name char(20),RMEMO char(20),TS integer)
查询语句如下
select distinct name,
(select sum(ts) from tmptj where RMEMO='出勤'),
(select sum(ts) from tmptj where rmemo='出差'),
(select sum(ts) from tmptj where rmemo like '请假%'),
(select sum(ts) from tmptj where rmemo='缺勤')
from tmptj

结果正常
 
最好重新设计表。这个结构不合理。以后查询其他的会更麻烦的
 
首先,正如yxyyyy所说,这样的数据库设计好像不太合理.
create table t_user (
id number(5),
name varchar2(20))

create table Tmptj(
user_id number(5),--指向t_user的id
type char(1),
datecount number(2))

create table t_type(
id char(1),
typename varchar2(10))
第三个表可以不建,直接用1代表出勤 2......(在代码里写死)
select a.name, b.typename, c.datecount
from t_user a, t_type b, tmptj c
where c.user_id(+)=a.id and c.type=b.id

其次,如果你一定要坚持现在的设计,也没什么问题
我可以给你写一个例子
把你的油箱告诉我
 
TO:Brave:
你好?
关于你所说的‘不要对回答的答案一下子就否定’的事。原因是,你这样的查询结果
如果在可以执行的情况下也应该是有问题的。你得出来的应该会是如下结果:
**姓名** **出勤天数** **出差天数** **请假天数** *缺勤天数*
李先生 6 11 66
李小姐 6 11 66
张先生 6 11 66
这结果与我要求的有很大差别。
 
我测试过Brave兄的答案,在一个TQuery控件中SQL里加入上面的代码可以查询。
 
TO:mouseboy 以后我不需要再查询了这就是结果。
 
那好办
select distinct name,
(select sum(ts) from tmptj a where RMEMO='出勤' and a.name=b.name),
(select sum(ts) from tmptj a where rmemo='出差' and a.name=b.name),
(select sum(ts) from tmptj a where rmemo like '请假%' and a.name=b.name),
(select sum(ts) from tmptj a where rmemo='缺勤' and a.name=b.name)
from tmptj b
 
TO Brave:
hcl说的是实情,呵呵,我刚才没有注意统计
 
TO:eric.youbin
你好我是一定要用这个数据表。
你的好方法,可EMAIL给我的。
EMAIL:Dargon949@163.net
谢了,但首先申明一定不要发病毒过来啊。要不能我会生气的。
等你!
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部