主键 发送人id 收件人Id 箱子 标题 内容 是否已读
Pmid msgfromid msgtoid folder subject message new
说到现在肯定一点问题都没有,但是如果我们加上两个箱子,并且还能转移信息,那么问题就出来。
如果我再给B发信息,并且发一条,保存一条,收件箱和发件箱还是按上面的语句走,但是如果我其中的一封信息转移到了保险箱(folder:3),如果按上面的语句,就是两个箱子Or一下,也就是:(msgfromid = B and folder = 3) Or (msgtoid = B and folder = 3),按正常来说,我给B发信息,发出去之后,对这条信息的处置权跟我没有关系了,可是如果我同时给B发一封,在自己保留一封(发件箱),也就是出现两条记录,只不过在我这边是发件箱(1),在B中是收件箱(0),
msgFromid msgtoid folder
Me B 0 (在B中是收件箱)已经发出去了,处置权归B
Me B 1 (在我中是发件箱),这条信息是我的, 处置权归我
假设我把发件箱中这条信息的箱子转移到保险箱中(folder : 3) 也就是
msgFromid msgtoid folder
Me B 0 (在B中是收件箱)处置权归B
Me B 3 (原先在我中是发件箱,现在是保险箱) 处置权归我
我没有转移前:按着(msgfromid = B and folder = 3) Or (msgtoid = B and folder = 3)
肯定在B中的保险箱没有信息,
可是在我转移后我把我的folder 改成3后
在按着上面的语句就会出现,在我的包厢中的信息,同时出现在B中的保险中中,可是这条信息的确是我的,后果就不说了。。
出现上面的问题,所以就不能按dz的写了,所以为了解决上面的问题,就只能在加一个字段了,ower信息所有者,说明这条信息到底是谁的,在调收件箱就不能是msgtoid = meid and folder = 1 了,就变成owerid = meid and folder= 1 ,这样在出现我发一条在保存一条,只不过就是owerid不同了,也就没有在取我信息的总条数用selct count(*) as pmidcount from dnt_pms where (msgfromid = meid and folder = 1 ) or (msgtoid=meid and folder = 0) or (msgfromid = meid and folder = 2),就不用判断箱子了,直接用Select count(*) as pmidcount from dnt_pms where owerid = meid .
现在我用的是这种办法,不知道这种做法有没有其他的问题,反正我现在感觉还没有:)
如果还有其他的好办法,在这请教以下