|  | 主题:  SQL查询语句问题 | 
            
                        
                
                    |  风之翅
 职务:普通成员
 等级:2
 金币:10.0
 发贴:540
 注册:2001/1/31 14:48:59
 
 | 
                            
                            #12003/9/12 22:18:46 
                                遇到难题了,好几天都没有解决:(,关于论坛我参与的主题的问题 数据表:fid(帖子ID),fposter(发帖者),frepid(0为主题帖,其余数字对应回复主题fid) 我原来是先用fposter,和frepid<>0找出frepid(建一个Recordset),再一个个找对应主题fid(另建一个Recordset),可是觉得可能太耗资源了,每一个查询都要重建一个Recordset啊。能否只用一个SQL语句就查询了,或是我的数据表设计有缺陷?我SQL语法不熟啊,谢谢指教,请喝酒哦    | 
                        
                
                    |  janlay
 职务:管理员
 等级:7
 金币:28.0
 发贴:7244
 注册:2003/11/27 18:07:11
 
 | 
                            
                            #22003/9/12 22:28:04 
                                SELECT DISTINCT fID FROM tPost WHERE fPoster='"& strUser &"' ORDER BY fID DESC" 
                                
                                    编辑历史:[这消息被janlay编辑过(编辑时间2003-09-12 22:50:41)]
 
 | 
                        
                
                    |  风之翅
 职务:普通成员
 等级:2
 金币:10.0
 发贴:540
 注册:2001/1/31 14:48:59
 
 | 
                            
                            #32003/9/12 22:43:10 
                                我原来是是先建一个Recordset"SELECT frepid FROM bbs WHERE fposter = '"&Session("MM_Username")&"' And frepid <> 0 Order by fposttime ASC "
 再用rspost.Fields.Item("frepid").value = fid 再建一个Recordset找出该回复的主题ID
 这样太累了。。。
 | 
                        
                
                    |  janlay
 职务:管理员
 等级:7
 金币:28.0
 发贴:7244
 注册:2003/11/27 18:07:11
 
 | 
                            
                            #42003/9/12 22:49:14 
                                这样太累,换一个方式思考:现在只需要取得用户所有的帖子。从这个基点出发,问题就简化了很多
                                
                                
                                
                             | 
                        
                
                    |  风之翅
 职务:普通成员
 等级:2
 金币:10.0
 发贴:540
 注册:2001/1/31 14:48:59
 
 | 
                            
                            #52003/9/12 23:00:28 
                                呵呵,取这个用户的所有回复类帖子好办啊,但是不能显示这个回复帖子的主题就不好看了啊,我试试改数据表好了
                                
                                
                                
                             | 
                        
                
                    |  janlay
 职务:管理员
 等级:7
 金币:28.0
 发贴:7244
 注册:2003/11/27 18:07:11
 
 | 
                            
                            #62003/9/12 23:14:27 
                                忘了说了,这种方式要求能显示任意一个帖子(即使它不是主题的第一个帖子,很多论坛支持这种方式)    | 
                        
                
                    |  janlay
 职务:管理员
 等级:7
 金币:28.0
 发贴:7244
 注册:2003/11/27 18:07:11
 
 | 
                            
                            #72003/9/12 23:18:10 
                                如果都得到主题帖的ID,试试这种写法: SELECT DISTINCT (CASE WHEN fRepID=0 THEN fIDd ELSE fRepID END) AS ID FROM bbs WHERE fPoster = '"& Session("MM_Username") &"' ORDER BY fID"提示:按照ID排序比按时间字段排序速度快,尤其是在给ID字段加了索引时
                                
                                
                                
                            
                                
                                    编辑历史:[这消息被janlay编辑过(编辑时间2003-09-12 23:19:05)]
 
 | 
                        
                
                    |  风之翅
 职务:普通成员
 等级:2
 金币:10.0
 发贴:540
 注册:2001/1/31 14:48:59
 
 | 
                            
                            #82003/9/12 23:21:45 
                                非常感谢这么快的回复  我在看动网论坛源代码,希望可以解疑
                                
                                
                                
                             | 
                        
                
                    |  janlay
 职务:管理员
 等级:7
 金币:28.0
 发贴:7244
 注册:2003/11/27 18:07:11
 
 | 
                            
                            #92003/9/12 23:33:48 
                                这里关键就是根据条件判断将不同的ID作为同一个结果使用,SQL语句里面的 case when 可以实现这一点   
                                
                                    编辑历史:[这消息被janlay编辑过(编辑时间2003-09-12 23:34:29)]
 
 |