请问如何从一张表中同时读出两条不同的记录
在一个留言的表中,字段如下:
留言表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




