高分!!向高手请教在C#中若干SQL的应用问题

rhs 2004-04-30 01:38:37
题目:有这样的一个Access数据库,其中有一表tblMark:
 item1(整型) | item2 | item3 | dates(短日期型) | ID(字符串型) | ticketID(自动编号,并是主键) |
这是一个投票记录的录.ID是候选人,itemX是候选人某一方面的评分.因为有多人投票,所以用ticketID记录票号.

第一个问题:
  我要查询tblMark表中的dates字段(是短日期类型)距当前日期小于30天的记录.于调用SQL中的GetDate获取系统时间函数和dateDiff时间隔函数.语句是这样的string strsql = "select * from tblMark where (datediff(day,dates,GetDate())<30)";但是出现异常"表达式中'GetDate()'没有定义".应该怎样改?

第二个问题:
  如果我想查询与系统当前时间是同一个月的记录.那么SQL语句怎样写呢?

第三个问题:
  接着上一问,我想统计当月每一个候选人的总评分,即是把当月所有相同的ID的所有记录的itemX相加.之后生成一个新的表包含如下字段:ID| total || voteDate | voteDate是投票统计时的年月日期.用SQL语句怎样写呢?

第四个问题:
  (这个问题似乎有点离题)我想向数据库方面发展,但对数据库基础很差,有什么关于数据库原理的书籍介绍呢?还有一个(特别是在数据库方面)程序员与数据库管理管理员的知识的着重点有哪些区别?
  
  以上问题最好是用SQL解决,最好不是用DataSet进行比较,我就是用这样的方法,但这样使得程序复杂而且很消耗内存.

多谢!!
...全文
26 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
starheart 2004-04-30
  • 打赏
  • 举报
回复
group by id,date()
elite2018 2004-04-30
  • 打赏
  • 举报
回复
把它改为SqlDataAdapter连接,并Fill到一个DataSet ?

use CommandText to accept the string : "your sql script "

then Execute it , refer to MSDN
wangsaokui 2004-04-30
  • 打赏
  • 举报
回复
lhx1977(清水无鱼) 兄弟辛苦,不抢了!
rhs 2004-04-30
  • 打赏
  • 举报
回复
多谢大家的帮忙.
TO: lhx1977(清水无鱼)
  我真的很要用msn向你请教问题,但很遗憾我现在用的是教育网,没有代理上不了msn.在第三个问题,我按你给出的sql语句但发生如下异常:"试图执行的查询中不包含作为合计函数一部分的特定表达式'ID'"
还用如果我想把结果返向DataSet填充.删除了into table就行了吧?
Afrit 2004-04-30
  • 打赏
  • 举报
回复
第一, 没问题
select * from aa where (datediff(day,c,GetDate())<30)成功执行。

第二
select * from aa where month(c)=month(getdate())
BearRui 2004-04-30
  • 打赏
  • 举报
回复
请教: lhx1977(清水无鱼)

第三:  
select id,sum(it1+i2+...) as total , date() as votedate
into DDDD
from table
where datediff(mm,date(),date_col)=0
group by id

任何把它改为SqlDataAdapter连接,并Fill到一个DataSet 中去啊!!!

谢谢
生活真美好 2004-04-30
  • 打赏
  • 举报
回复
gz
李洪喜 2004-04-30
  • 打赏
  • 举报
回复
第一:
string strsql = "select * from tblMark where (datediff(day,dates,Date())<30)";
第二:
select * from table where datediff(mm,date(),date_col)=0
第三:  
select id,sum(it1+i2+...) as total , date() as votedate
into DDDD
from table
where datediff(mm,date(),date_col)=0
group by id
如果想学SQL,在MSN上和我交流吧。msn:lhx1977@hotmail.com

李洪喜 2004-04-30
  • 打赏
  • 举报
回复
明白了。getdate() 换成date()就可以了。在ACCESS中没有getdate()
alan99 2004-04-30
  • 打赏
  • 举报
回复
第一个问题可以这样来:
string dateString = DateTime.Today.Date.AddDays(-30).ToShortDateString();
string strsql = "select * from tblMark where dates<dateString";
thinkingforever 2004-04-30
  • 打赏
  • 举报
回复

第一个问题:
  我要查询tblMark表中的dates字段(是短日期类型)距当前日期小于30天的记录.于调用SQL中的GetDate获取系统时间函数和dateDiff时间隔函数.语句是这样的string strsql = "select * from tblMark where (datediff(day,dates,GetDate())<30)";但是出现异常"表达式中'GetDate()'没有定义".应该怎样改?

这个语句没有错啊


第二个问题:
  如果我想查询与系统当前时间是同一个月的记录.那么SQL语句怎样写呢?
select item1, item2, item3 ,dates ,ID, ticketID from tblMark where month(dates)=month(getdate())
李洪喜 2004-04-30
  • 打赏
  • 举报
回复
第二个问题:
  如果我想查询与系统当前时间是同一个月的记录.那么SQL语句怎样写呢?
select * from table where datediff(mm,getdate(),date_col)=0

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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