| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 593 人关注过本帖
标题:解释一下SQL语句(牛人请进)
只看楼主 加入收藏
s6gy
Rank: 1
等 级:新手上路
帖 子:330
专家分:0
注 册:2006-10-26
收藏
 问题点数:0 回复次数:6 
解释一下SQL语句(牛人请进)
这个是这一段的全部代码
<%
'验证登录状态
Call CheckLogin()

'获取会话
strUserID = Session("UserID")

'获取表单变量
strActionType = Trim(Request("ActionType"))
intPage = Trim(Request("Page"))
If strActionType = "AddGroup" Then
Response.Write(strActionType)
strGroupName = Trim(Request("GroupName"))
strGroupDesc = Trim(Request("GroupDesc"))
strGroupLevel = Trim(Request("GroupLevel"))
Call AddGroup(strGroupName,strGroupDesc,strGroupLevel,strUserID)
End If

'初始化分页变量
If intPage = "" Or isNumeric(intPage) = 0 Then intPage = 1
intPageSize = 10
intStartRow = (Page - 1) * intPageSize + 1
intEndRow = intPage * intPageSize
strPage_Url = "/admin/group/group_add.asp?"

'初始化SQL
Sql_Count = "select count(*) from icms_group"
Sql = "select * from (select row_.*,rownum rownum_ from(" &_
"select t1.group_id,t1.group_name,t1.group_desc,t2.real_name from icms_group t1,icms_user t2 " &_
"where t2.user_id = t1.builder_id order by t1.group_id desc" &_
") row_ where rownum <= " & intEndRow & ") where rownum_ >= " & intStartRow

'打开数据库
Call OpenDatabase()

'执行数据操作
intRecordCount = CInt(Conn.Execute(Sql_Count)(0))
Rs.Open Sql,Conn,1,1
If Not Rs.Eof Then
arrayGroup = Rs.GetRows()
Else
arrayGroup = ""
End If
Rs.Close

'关闭数据库
Call CloseDatabase()
%>

红色代码 是什么意思请解释 大概是分页查询 用标准语句怎么写 请直接
等待中
搜索更多相关主题的帖子: Request 
2007-04-13 16:50
rainic
Rank: 6Rank: 6
等 级:贵宾
威 望:27
帖 子:2367
专家分:0
注 册:2005-8-9
收藏
得分:0 

看看

[此贴子已经被作者于2007-4-13 23:22:05编辑过]


2007-04-13 23:19
rainic
Rank: 6Rank: 6
等 级:贵宾
威 望:27
帖 子:2367
专家分:0
注 册:2005-8-9
收藏
得分:0 
Sql_Count = "select count(*) from icms_group"
看一共有多少行记录咯

2007-04-13 23:20
rainic
Rank: 6Rank: 6
等 级:贵宾
威 望:27
帖 子:2367
专家分:0
注 册:2005-8-9
收藏
得分:0 
Sql = "select * from (select row_.*,rownum rownum_ from(" &_
"select t1.group_id,t1.group_name,t1.group_desc,t2.real_name from icms_group t1,icms_user t2 " &_
"where t2.user_id = t1.builder_id order by t1.group_id desc" &_
") row_ where rownum <= " & intEndRow & ") where rownum_ >= " & intStartRow


在 "select t1.group_id,t1.group_name,t1.group_desc,t2.real_name from icms_group t1,icms_user t2 " &_
"where t2.user_id = t1.builder_id order by t1.group_id desc"
的查询结果中查询表row_的全部字段和rownum,并把rownum改名成rownum_

唉,不知道怎么表达


2007-04-13 23:26
rainic
Rank: 6Rank: 6
等 级:贵宾
威 望:27
帖 子:2367
专家分:0
注 册:2005-8-9
收藏
得分:0 
Sql = "select * from (select row_.*,rownum rownum_ from(" &_
"select t1.group_id,t1.group_name,t1.group_desc,t2.real_name from icms_group t1,icms_user t2 " &_
"where t2.user_id = t1.builder_id order by t1.group_id desc" &_
") row_ where rownum <= " & intEndRow & ") where rownum_ >= " & intStartRow

1.先解释最内层的SELECT
select t1.group_id,t1.group_name,t1.group_desc,t2.real_name from icms_group t1,icms_user t2 " &_
"where t2.user_id = t1.builder_id order by t1.group_id desc
把icms_group表改名成t1,把icms_user表改名成t2。
选择t1的group_id和group_name、group_desc,t2的real_name,
选择条件是:当t2的user_id等于t1的builder_id。
把查询结果按t1的group_id排倒序。最得到查询结果 A

2.再解释中间那层SELECT
select row_.*,rownum rownum_ from( A ) row_ where rownum <= " & intEndRow
把结果A改名成row_,选择row_的全部字段和rownum字段,并把rownum改名为rownum_ ,
选择条件是:当rownum小于或等于变量intEndRow 。最后得到结果 B

3.最后解释最外层的SELECT
select * from ( B ) where rownum_ >= " & intStartRow
在结果B中选择所有字段,选择条件是:rownum_大于或等于变量intStartRow。

终于解释完了~~哈哈。。。应该是这样了

By the way... 这是最烂的SQL语句,不要以为SQL写得越复杂就越好。
能写出复杂的SQL最多能证明他对SQL语言比较熟悉,但并不说明他是好程序员,相反,那是最“差”的程序员。
多重查询会把服务器搞死的。

建议你不要用

[此贴子已经被作者于2007-4-13 23:47:18编辑过]


2007-04-13 23:31
li510220
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2007-4-14
收藏
得分:0 

这么简单
lz卖弄学问呀

2007-04-14 11:08
s6gy
Rank: 1
等 级:新手上路
帖 子:330
专家分:0
注 册:2006-10-26
收藏
得分:0 

你们的解释我都看差不多了 。但是我想说的是 在数据库SQL SERVER 中不 能运行且出错 显示的是
错误类型:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E21)
ODBC 驱动程序不支持所需的属性。
我如何解决呢

2007-04-16 09:41
快速回复:解释一下SQL语句(牛人请进)
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.026818 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved