整理聊天室的人物對話.文本排序問題,(100分)

  • 主题发起人 主题发起人 小師妹
  • 开始时间 开始时间

小師妹

Unregistered / Unconfirmed
GUEST, unregistred user!
file :talk.txt
時間 人物1 人物2 聊天內容
[10:07:27] a b i want to make friends with u ,can i ?
[10:07:28] a b un be silly to meet ur online friend
[10:07:33] a b do
u often come here?
[10:07:37] b a why not?
[10:07:43] a c hi, free?
[10:07:47] a d r u a good student?
[10:07:54] b a do
you like music?
[10:07:56] b c hi, nice to meet you.
[10:08:04] c d i am inaustralia
[10:08:12] c a i am in australia
[10:08:19] d c sorry,!
[10:08:25] a b do
u like this chat room?
[10:08:27] b a hi, there?
[10:08:35] a c ?
[10:08:35] a b what is the meaning of add
----------------------------------------------------
以上的人物對話顯然很亂,我想整理一下,達到以下效果(要考慮時間順序)
組1
a b fadfdasf
b a fadfasfsa
a b fadfasdfasdf
a b fadfasfas
b a adfasdfasd
組2
a c fasfasd
c a fafdsa
a c fadfasdfasfdas
組3
b c afasdsdf
b c hjhlkj
c b fadf;lj;
......
怎么進行排序處理呢怎么排序呢?
 
我们是否可以这样考虑
将两个人的对话进行分组,但两个人是无序的,也就是说可能a在前也可能b在前
但无论谁在前都应该认为是一个组
那我们就人为的设个顺序 ,构建一计算的字段,这个字段的值是那两个人名字段的和,
但是总是以较小的值的那个放在最前面
此处以r1,r2,lr代表 人1,人2,内容
select r1,r2,(case when (r1>r2) then
(r1+r2) else
(r2+r1) end) as sumr,lr from t2
现在sumr这个字段就符合了我们的要求
对这个结果集再进行分组
select sumr,lr from
(select r1,r2,(case when (r1>r2) then
(r1+r2) else
(r2+r1) end) as sumr,lr from t2) as tempt
group by sumr,lr
到此为止已经将聊天人的组对话给分出来了
最后的工作就是以分组后的结果集和原始聊天表数据进行jion处理
条件就是lr字段相等,字段r1,r2的值在sumr字段中
上面两个条件缺一不可
因为你不能保证ac和bc的聊天内容都是完全不一样的

 
分组统计信息!
 
将这些文本导数数据库中,在数据库中排序比文本方便多了,就象楼上说的一样,用分组排序,然后再导出来,就可以达到目的了
 
技巧在這個語句上:
select r1,r2,(case when (r1>r2) then
(r1+r2) else
(r2+r1) end) as sumr,lr from t2
因為有時間字段,所以我用一下語句
select chtTime,r1,r2,lr,
(select r1,r2,(case when (r1>r2) then
(r1+r2) else
(r2+r1) end) as sumr
from t2) from chat order by sumr,chtTime
 
52free可能沒有的考虑到时间字段吧,所以就多了分组,join。。。
发分!
 
爱啊哟,[:(]错啦,没有给分给app2001,刀剑如梦![:(!]
 
后退
顶部