CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  MS-SQL Server >  基础类

请问如何从一张表中同时读出两条不同的记录

楼主fest(fest)2006-06-03 14:50:11 在 MS-SQL Server / 基础类 提问

在一个留言的表中,字段如下:  
  留言表Tab_Faq:    
  字段                           类型                                    
  id                             自动编号  
  writeUserId           外键(表Tab_User   )  
  answerUserId         外键(表Tab_User   )  
  question                 Text  
  answer                     Text  
   
  用户表Tab_User:  
  userId                     自动编号  
  userName                 Text  
   
  请问:读取记录时,要如何才能得到(     留言表的Id,留言问题,留言回复,   提问者姓名,答复者姓名)?    
   
  在线等,谢谢! 问题点数:50、回复次数:12Top

1 楼ping3000(苦练葵花点穴手)回复于 2006-06-03 14:57:42 得分 10

select   id,answer,question,  
  提问者姓名=   (select   UserName   from   Tab_User   where   userId   =   answerUserId),  
  答复者姓名=   (select   UserName   from   Tab_User   where   userId=   writeUserId)  
  from   Tab_FaqTop

2 楼zlp321002(Life Is Good,Let's Shine)回复于 2006-06-03 14:58:07 得分 10

select     留言表的Id=a.id,  
                  留言问题=a.question,  
                  留言回复=a.answer,  
                  提问者姓名=(select   userName   from   用户表Tab_User  
          where   userId=a.writeUserId   ),  
                  答复者姓名=(select   userName   from   用户表Tab_User  
          where   userId=a.answerUserId)  
  from   留言表Tab_Faq   aTop

3 楼paoluo(一天到晚游泳的鱼)回复于 2006-06-03 15:03:14 得分 15

用關聯效率更高。  
   
   
  Select    
  A.id   As   留言表Id,  
  A.question   As   留言问题,  
  A.answer   As   留言回复,  
  B.userName   As   提问者姓名,  
  C.userName   As   答复者姓名  
  From   Tab_Faq   A,Tab_User   B,Tab_User   C  
  Where   A.writeUserId=B.userId   And   A.answerUserId=C.userIdTop

4 楼itblog(Just for wife!)回复于 2006-06-03 15:17:42 得分 15

select   id,b.username   as   writeUser,c.username   as   answeruser,question,answer    
  from   tab_faq   a    
  left   join   tab_user   b   on   a.writeUserId=b.uerid  
  left   join   tab_user   c   on   a.answeruserid=c.useridTop

5 楼fest(fest)回复于 2006-06-03 15:26:02 得分 0

谢谢各位,特别要感谢paoluo(一天到晚游泳的鱼)   和itblog(^ω^)   。  
  前面我忘了说一条了,要在Access中写存储过程,由于只能有一条SQL语句,所以二位给出的方法会更好。谢谢你们Top

6 楼fest(fest)回复于 2006-06-03 15:32:59 得分 0

对不起,看错了。ping3000和zlp321002也都只用一条语句实现。可使用连接效率是否会高一些,谢谢你们,现在就给分。Top

7 楼paoluo(一天到晚游泳的鱼)回复于 2006-06-03 15:35:27 得分 0

看你的表結構,估計你是ACCESS,所以itblog的寫法是不適合你的。  
   
  這是MS   SQL的寫法。Top

8 楼paoluo(一天到晚游泳的鱼)回复于 2006-06-03 15:35:58 得分 0

用聯接的效率是要高一些。Top

9 楼fest(fest)回复于 2006-06-03 15:38:59 得分 0

ACCESS中不能使用左连接?Top

10 楼paoluo(一天到晚游泳的鱼)回复于 2006-06-03 15:44:10 得分 0

不好意思,我弄錯了。  
   
  ACCESS支持這個。  
   
  不好意思,itblog。Top

11 楼fest(fest)回复于 2006-06-03 16:28:46 得分 0

如果在留言表Tab_Faq中,默认设置answerUserId字段的值为空,那么ping3000和zlp321002给出的方法可以显示尚未得到回复的流言,paoluo(一天到晚游泳的鱼)   和itblog(^ω^)   的方法中显示的是已经给出回复,即在留言表Tab_Faq中answerUserId字段不为空的记录。Top

12 楼paoluo(一天到晚游泳的鱼)回复于 2006-06-03 16:57:12 得分 0

itblog用的是左聯接,應該可以得到所有的吧。  
   
  Top

相关问题

关键词

得分解答快速导航

  • 帖主:fest
  • ping3000
  • zlp321002
  • paoluo
  • itblog

相关链接

  • SQL Server类图书

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo