select * from bbs a,bbs_detail b,user c where c.user_id=b.user_id and a.bbs_id=b.bbs_id;//返回所有字段
==========================================================================
select a.*,b.*,c.user_name from bbs a,bbs_detail b,user c where c.user_id=b.user_id and a.bbs_id=b.bbs_id;//返回bbs,bbs_detail中的所有字段值和user中的user_name字段值
==========================================================================
select a.*,b.*,c.user_name from bbs a,bbs_detail b,user c where c.user_id=b.user_id and a.bbs_id=b.bbs_id;//返回bbs,bbs_detail中的所有字段值和user中的user_name字段值
select * from user left join bbs on user.user_id = bbs.user_id left join bbs_detail on bbs_detail.user_id = bbs.user_id where bbs.bbs_id = bbs_detail.bbs_id
其实问题的关键在于:表格一的每一行都需要显示user_name两次,一个是作者,另一个是回复人,所以不管怎么写,都是形如:select user_name from .....,只有一个user_name,所以不能取到两个不同的user_name
表结构就在顶楼啦
as002(雨人)
表结构应该是合理的,这是一个一对多的表格(bbs:bbs_detail)
example:
<bbs>
====================================================================
标题 | 作者user_id | 回复人reply_user_id |bbs_id
--------------------------------------------------------------------
今天天气怎样? 009 003 1
大家好吗? 006 008 2
--------------------------------------------------------------------
<bbs_detail>
====================================================================
bbs_id | user_id | contents
--------------------------------------------------------------------
1 001 我们这里在下雨
1 003 我们这里天晴
2 002 很好
2 008 很好
--------------------------------------------------------------------
为了减少冗余,在上面两个表里只存储用户代号user_id,在显示论坛的时候代换成用户名user_name
B表select A.a as aa,B.a as ba
where A.c = B.c类似就可以解决问题了.
别的BBS都是怎么做出来的啊?