mysql 查询所有评论以及回复
高洛峰
高洛峰 2017-04-17 15:30:30
[MySQL讨论组]

表设计如下

question(id, user_id,content)
answer (id,question_id,user_id,content)
reply (id,answer_id, user_id,content)

请问要怎么一次性查询所有的评论和回复啊
目前用group by和group_concat实现不了额..

高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

全部回复(2)
怪我咯

我理解:question是问题表,罗列所有的提问
answer 是回复表,对某个具体问题的回复,用question_id与question表中的id做关联
reply 是对某个回复的评论,用answer_id与answer表中的id做关联
以下代码,基于以上理解

select t1.q_id as 问题id
, t1.q_user_id as 提问者id
, t1.q_content as 问题内容
, t2.a_id as 回复id
, t2.a_user_id as 回复者id
, t2.a_content as 回复内容
, t3.r_id as 评论id
, t3.r_user_id as 评论者id
, t3.r_content as 评论内容
from 
(
select id as q_id ,user_id as q_user_id ,content as q_content
from question
) t1 -- 所有的问题列表,用id做唯一性的区分
left outer join
(
select id as a_id ,question_id ,user_id as a_user_id ,content as a_content
from answer
) t2
on t1.q_id = t2.question_id -- 每个question_id对应的回复
left  outer join
(
select id as r_id ,answer_id ,user_id as r_user_id ,content as r_content
) t3 
on t2.a_id = t3.answer_id -- 每个answer_id对应的评论
天蓬老师

select reply.,answer.,question.* from
reply
right join answer on
reply.answer_id = answer.I'd
right join question on
answer.question_id = question.id
Where question.id =(查找的question.id)

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号