我前面发的:高难度排序问题,急寻帮助!已结
发表于:2007-12-19 11:20:55
http://topic.csdn.net/u/20071221/21/5e4b4bbb-fb64-45de-aad8-506a6527a639.html比如有一表TTT有几个字段
ID
cde
cdeid
pid
数据如下 ID cde cdeid pid
1 AAA 2 2
2 DDD 1 3
3 CCC 1 1
4 DDD 3 1
5 DDD 2 1
6 DDD 1 2 每次搜索都显示表TTT中全部数据,搜索时POST传递数据cde值
例如搜索时cde=DDD
排序的规则是:
1、获取cde=DDD数据并且优先cdeid按从大到小排序然后pid按小到大排序
2、cde不等于DDD的数据cdeid不排序,pid按小到大排序 如果能满上二条应该搜索如下结果:
ID cde cdeid pid
4 DDD 3 1
5 DDD 2 1
6 DDD 1 2
2 DDD 1 3
3 CCC 1 1
1 AAA 2 2
传数据cde=DDD 目前按 账号tim_spac及其它账号的方法已经解决,写法如下
select
cde,cdeid,pid
from
TTT
order by
(case cde when 'DDD' then cdeid else 0 end) desc,pid asc 新的问题:比如有二表TTT,FFF
FFF表数据如下
ID cde cdeid pid
1 AAA 2 2
2 DDD 1 3
3 CCC 1 1
4 DDD 3 1
5 DDD 2 1
6 DDD 1 2
TTT表数据如下 ,FFF_ID对应TTT中的ID
FFF_ID
1
2
3
4
5
6说明TTT表中的FFF_ID中的数据对应FFF中的ID每次搜索都显示表TTT中全部数据,搜索时POST传递数据cde值
例如搜索时cde=DDD
排序的规则是:以FFF_ID对应ID中的字段cde,cdeid,pid排序表TTT
1、获取cde=DDD数据并且优先cdeid按从大到小排序然后pid按小到大排序
2、cde不等于DDD的数据cdeid不排序,pid按小到大排序 如果能满上二条应该TTT表搜索如下结果:
FFF_ID
4
5
6
2
3
1
帮高手帮下忙!
from fff a
inner join ttt b
on a.id=b.fff_id
(case a.cde when 'DDD' then a.cdeid else 0 end) desc,a.pid asc
select * from FFF ....我要达到的是以TTT为主表,要以FFF中的相关字段对TTT查询结果排序,因为TTT中除FFF_ID还有许多数据要查询结果select name,contone,...,fff_id from TTT ....
结果排序只依赖于order by. 或者两个表中按连接条件,有不匹配的情况,即ttt中的某个fff_id不存在于 fff或fff中某个id不存在于ttt.
那么用其它连接方式比如left join等,主次不同取的结果会不同.我不太明白你的意思.
select name,content from TTT 后面加排序
select name,content from TTT 后面加排序
你写的那样,那我的name,content应该加在哪位置?
如果你有些列不样,那么只能写列表了.
比如
select b.name,b.content,a.pid,a....
from fff a
inner join ttt b
on ..
order ..a就指的fff表,b指的ttt
set rs=Server.CreateObject("ADODB.Recordset")
select a.*,b.name,b.content
from fff a
inner join ttt b
on a.id=b.fff_id
(case a.cde when 'DDD' then a.cdeid else 0 end) desc,a.pid asc
rs.open sql,conn,1,1do while not rs.eof
此中间提取 rs("b.name")
rs.MoveNext
loop以上运行不了不知道哪点写错了
set rs=Server.CreateObject("ADODB.Recordset")
sql = "select a.*,b.name,b.content " & _
" from fff a " & _
"inner join ttt b " & _
" on a.id=b.fff_id " & _
" (case a.cde when 'DDD' then " & _
" a.cdeid else 0 end) " & _
" desc,a.pid asc "
rs.open sql,conn,1,1
order by行了,谢谢