我正在为我的部门建立一个小型社交网络。
我将主页作为您可以发表评论的地方,您的朋友可以对其进行评论。
我有 4个表 ... allposts_tb,friendship_tb,response_tb和signup_tb ..
allposts_tb 收集人员发布的更新和帖子,其中包含以下列all_id(PK)
,name
,comment
,time
)
友谊 _tb作为列(friend_id(Pk)
,myname
,newfriend
,status
)
response_tb 作为列(id(Pk)
,name
,response
,all_id(Fk)
,time
)
signup_tb 作为列(signup_id
,lastname
,firstname
,email
,password
,country
profilepicture
)
我可以使用下面的SQL查询轻松显示人们发表的评论
SELECT allposts_tb.all_id,allposts_tb.name,allposts_tb.comment, allposts_tb.time,
friendship_tb.myname,friendship_tb.newfriend,signup_tb.firstname,
signup_tb.lastname,signup_tb.email,signup_tb.profilepicture,
allposts_tb.expand
FROM allposts_tb,friendship_tb,signup_tb
WHERE allposts_tb.name = friendship_tb.newfriend
and friendship_tb.myname=colname and
allposts_tb.name=signup_tb.email
ORDER BY allposts_tb.all_id DESC
and colname=$_SESSION['MM_Username']
我在显示人们对评论下面的特定评论做出的回复时遇到问题......就像复制Facebook的页面一样。当然你说了些什么,它应该显示在评论的正下方...... 我知道我打算使用子查询。在查询中,我给了你们..已经阅读了很多网页,但无法让它工作......请帮助我......
答案 0 :(得分:1)
除了使用response_tb而不是allposts_tb表之外,您可以创建类似于第一个查询的第二个查询。然后在两个查询之间放置一个UNION ALL语句,组合结果。最后,您可以放置一个ORDER BY子句并按all_id排序,然后按时间排序。
只需在response_tb中将“comment”字段替换为查询中的“response”。
SQL很可能看起来像这样:
SELECT allposts_tb.all_id,allposts_tb.name,allposts_tb.comment, allposts_tb.time,
friendship_tb.myname,friendship_tb.newfriend,signup_tb.firstname,
signup_tb.lastname,signup_tb.email,signup_tb.profilepicture,
allposts_tb.expand
FROM allposts_tb,friendship_tb,signup_tb
WHERE allposts_tb.name = friendship_tb.newfriend
and friendship_tb.myname=colname and
allposts_tb.name=signup_tb.email
and colname=$_SESSION['MM_Username']
UNION ALL
SELECT response_tb.all_id,response_tb.name,response_tb.response, response_tb.time,
friendship_tb.myname,friendship_tb.newfriend,signup_tb.firstname,
signup_tb.lastname,signup_tb.email,signup_tb.profilepicture,
response_tb.expand
FROM response_tb,friendship_tb,signup_tb
WHERE response_tb.name = friendship_tb.newfriend
and friendship_tb.myname=colname and
response_tb.name=signup_tb.email
and colname=$_SESSION['MM_Username']
ORDER BY all_id DESC, time desc