问各位SQL高手一个问题,多库操作的问题,散分·!·!!!

gw9842 2004-04-15 11:38:21
一个考勤的项目:数据库A,保存的是项目基本数据,里面内含表:
client (员工基本资料)
company (公司基本资料)
department (部门资料)
需要把上面3表联结才可以获得完整的人员详细资料数据,

数据库 Y2004 保存2004年全年的数据,内含表:
M0101
M0102
.
.
.

表名代表月份和日,
里面的内容为 员工ID号,当日考勤时间,

以上所有数据全部自动生成,现在需要把这些数据查询出来,SQL语句怎么写,
或者存储过程怎么写?需要得到的数据为,员工号,公司名,部门名,
当月所有日期的考勤记录,(如M0101----M0131代表员工一月份所有数据)


各位高手请帮忙!!!散分!!!
...全文
57 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
kissmett 2004-06-24
  • 打赏
  • 举报
回复
收藏
gw9842 2004-04-29
  • 打赏
  • 举报
回复
各位,问题我已经请教高手解决了,结帖吧
gw9842 2004-04-16
  • 打赏
  • 举报
回复
晕。。写存储过程建新的临时表怎么样,不过我存储过程非常不熟悉,有谁可以帮我写下吗,详细点的,不胜感谢!
eagle81 2004-04-16
  • 打赏
  • 举报
回复
电脑名字.数据库名称.所有者.表名,
我每天数据库增加3G,你的数据库不大,处理起来一闪就没有了。
gw9842 2004-04-16
  • 打赏
  • 举报
回复
详细描述下好了,整个问题是这样的,需要SQL SERVER 2000 + ASP.NET实现:
数据库LongToneY:
用户表:Client(ID,Name,Dept_Id,Company_ID)
Dept (Dept_id,Dept_name)
Company(Company_id,Company_Name)
数据库Y2004:
用户表:M0101-----M0131 代表一月份的表
以此类推:全年表为365个,以M+月份+日为表名
字段为:(User_Id,Date,Time)使用者ID,考勤日期,考勤时间

表内容为自动添加,过读卡器一次就往相对应的日期表中增加一条记录,
一个表中,如M0415(今天的考勤表)中有多条同使用者ID,但考勤时间不同的记录

现在要求根据部门或ID查询一个公司或一个部门任何月份的月考勤报表,格式如下:
用户ID 部门 公司 考勤日期 考勤时间


各位帮忙想个详细的办法,我比较菜,大家写仔细点好不好
gw9842 2004-04-15
  • 打赏
  • 举报
回复
可以给详细点的解答吗,需要可以把每月的考勤资料分部门或按员工ID
查询出来,并且可以自动发送到特定的电子邮件中去可以吗?
gw9842 2004-04-15
  • 打赏
  • 举报
回复
是啊是啊!!第一部分的查询也写下好吗,要考虑到这个库的数据量会很大,一天估计6000-10000的记录条,一个月就是180000至少的条目。。查询起来会不会很慢?有什么好点的办法可以根据ID,名字,公司,部门这几个综合查询当天或者当月的数据,而且数据要还过的去。。我想不到好办法,progress99(如履薄冰)帮帮忙啊!!!

whwenjz 2004-04-15
  • 打赏
  • 举报
回复
描述清楚点
progress99 2004-04-15
  • 打赏
  • 举报
回复
xp_sendmail
向指定的收件人发送邮件和查询结果集附件。

语法
xp_sendmail {[@recipients =] 'recipients [;...n]'}
[,[@message =] 'message']
[,[@query =] 'query']
[,[@attachments =] 'attachments [;...n]']
[,[@copy_recipients =] 'copy_recipients [;...n]'
[,[@blind_copy_recipients =] 'blind_copy_recipients [;...n]'
[,[@subject =] 'subject']
[,[@type =] 'type']
[,[@attach_results =] 'attach_value']
[,[@no_output =] 'output_value']
[,[@no_header =] 'header_value']
[,[@width =] width]
[ , [ @separator = ] 'separator' ]
[,[@echo_error =] 'echo_value']
[ , [ @set_user = ] 'user' ]
[,[@dbuse =] 'database']



写一个存储过程来发邮件,用job调用此存储过程即可。
1:
D. 将结果作为附件文件发送
下例将查询 SELECT * FROM INFORMATION_SCHEMA.TABLES 的结果作为文本文件附件发送给 Robert King。下例包含邮件的主题行以及将在附件之前出现的邮件正文。@width 参数用于防止在输出行中换行。

EXEC xp_sendmail @recipients = '收件人地址',
@query = 'SELECT * FROM 表',
@subject = 'SQL Server Report',
@message = '邮件来了',
@attach_results = 'TRUE', @width = 250
progress99 2004-04-15
  • 打赏
  • 举报
回复
sql mail

首先需要局域网内有Exchange Server
虽然sqlserver上的帮助说:只要有一个遵从扩展 MAPI 的邮件服务器就行
,但是除了Exchange Server,也不知道还有什么服务器支持MAPI,这纯粹是微软的东西!

先给介绍一下Exchange Server的设置方式:

1.使用 MSSQLServer 服务会用到的用户帐户登录到
Microsoft Windows NT® 4.0 或 Windows® 2000 上
该用户帐户必须是本地计算机的管理员和域帐户.
2.确认 Exchange Server 客户端 (Exchnge32.exe) 或
Microsoft Outlook™ 客户端 (Outlook.exe)
能够连接到 Exchange Server 而且能够发送电子邮件.
如果使用 Outlook,确保 Outlook 安装时选择了"用于企业或工作组"选项.
3.确认所用的 Exchange Server 配置文件中没有个人消息存储
(.pst).Exchange Server 配置文件的名字不应超过 32 个字符.
4.在"服务"选项卡上,确认 Microsoft Exchange Server 和个人通讯簿是唯一可用的服务
,然后单击"发送"选项卡.确认"发送到"框中选定的内容是 Exchange Server 中的邮箱
,它应该有一个类似于"邮箱 -<友好的用户名>"的名字(其中<友好的用户名>是在第一步
中登录到 Windows NT 4.0 或 Windows 2000 的用户名).
5.要运行带有 Exchange Server 的"SQL 邮件"
,MSSQLServer 服务必须在第一步中登录的同一个用户帐户下运行.
在"控制面板"中,双击"服务",选择 MSSQLServer 服务,然后单击"启动".
6.确认"SQL 邮件"的配置文件是否正确.在 SQL Server 企业管理器中,
展开服务器,展开"支持服务"文件夹,选择"SQL 邮件",然后用右键单击.
单击"属性",然后在"常规"选项卡上,确保"配置文件名"框中指定的配置文件名正确.
(事件探查器名必须与第三步中用到的配置文件名匹配.)单击"测试",验证配置文件设置正确.
7.如果"SQL 邮件"无法启动(例如,显示错误信息指出配置文件不正确),
请检查设置确保未将 Outlook Express 设置为默认的电子邮件客户程序.
在"控制面板"中双击"Internet"选项.在"程序"选项卡中,验证 Outlook Express
不在电子邮件组合框中.如果不得不将默认的电子邮件客户程序更改为
Outlook Express 以外的客户程序,那么,可能需要先验证"SQL 邮件"能够用邮件配置文件启动,
然后再停止并重新启动 MSSQLServer 服务.
在有些情况下,邮件的配置文件可能会损坏而且"SQL 邮件"将无法使用它.要更正这个问题,
需要把配置文件复制到另一个文件名下,或重新创建配置文件.
8.如果用来启动 Microsoft SQL Server™ 的帐户没有权限访问 Exchange 服务器,
那么就无法使用"SQL 邮件".执行 xp_cmdshell 来测试 SQL Server 对 Exchange Server
的访问权限,它执行与"SQL 邮件"相同的权限.使用下面的命令测试对服务器的连接,
假定 Exchange Server 位于名为"MyServer"的计算机上.

xp_cmdshell "NET USE \\MyServer\IPC$"

如果这个命令无法正常执行,说明第三步未正确完成.

progress99 2004-04-15
  • 打赏
  • 举报
回复
查詢語句樓主自己寫吧,自动发送电子邮件要用到job與sql mail;

企业管理器
--管理
--SQL Server代理
--右键作业
--新建作业
--"常规"项中输入作业名称
--"步骤"项
--新建
--"步骤名"中输入步骤名
--"类型"中选择"Transact-SQL 脚本(TSQL)"
--"数据库"选择执行命令的数据库
--"命令"中输入要执行的语句
--确定
--"调度"项
--新建调度
--"名称"中输入调度名称
--"调度类型"中选择你的作业执行安排
--如果选择"反复出现"
--点"更改"来设置你的时间安排


建議樓主在企業管理器中建job,很簡單的,也可用代碼:

--创建作业

exec msdb..sp_add_job @job_name='结束',@delete_level=3

--创建作业步骤
declare @sql varchar(800)
select @sql='exec SP_PAS_DBQB_END ''20040401'',''SJ'''
exec msdb..sp_add_jobstep @job_name='结束',
@step_name = '20040401',
@subsystem = 'TSQL',
@database_name='MYDB',
@command = @sql,
@retry_attempts = 0

--创建调度
EXEC msdb..sp_add_jobschedule @job_name = '结束',
@name = '调度',
@freq_type=1,
@freq_subday_type=0x1,
@active_start_date =20040401,
@active_start_time =112140


-- 添加目标服务器
EXEC msdb.dbo.sp_add_jobserver
@job_name = '结束' ,
@server_name = N'(local)'

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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