首页 新闻 会员 周边

前端与后台结合的问题

0
悬赏园豆:100 [待解决问题]

最近接触到一个项目,如有大神路过请留步一下
问题如下:
现在有两张表,A,B(A表的id时B表外键pid)

例如A表
id 话题
1 某明星和谁谁有暧昧关系?
2 先有鸡还是先有的蛋?
例如B表
id 答案 pid
1 和他有关 1
2 我不知道啊 1

A里面存放问题,就像微博一样上面是一个话题,下面有好多人评论

如:某明星和谁谁有暧昧关系? 3个人参与了评论
江南说:和c有关系
江北说:和d有染
路人说:去做头发去了
《某明星和谁谁有暧昧关系? 3个人参与了评论》存在A表中

{
江南说:和c有关系。
江北说:和d有染。
路人说:去做头发去了。
}这种评论存放于B表中

目前我遇到的问题是:
如果有人评论,我可以获取问题id把评论次数存在a表中,根据id=pid把答案存放在B表中,
在前端显示时,我可以用循环输出问题和答案进行展示。
上述我可以使用关联查询,获取A表的问题,统计次数和B表的答案进行显示在前端,
后端代数据库查询码如下
select q.id,q.title,q.detailDesc,q.anserCount,ass.answerDate,ass.answerContent from questions q LEFT JOIN answers ass ON q.id=ass.qid;";

如果有个新话题没有一个人评论时,q.id=ass.qid;此处无效,我无法前台显示
请大神,介绍下怎么做到异步显示,或者其他的方法,
最恶心的是还要存进去,只显示还好,没有任何思路
此处奉上100豆

余生请多指教ANT的主页 余生请多指教ANT | 初学一级 | 园豆:3
提问于:2019-02-17 22:10
< >
分享
所有回答(6)
0

数据库分2次查询,程序端处理逻辑。
1.getquestion
2.getanswers(questionId){ return {totalCount,pagesize,pageindex,answers:[]}} or
getanserser(string [] questionIds){return {questionId:{totalCount,pagesize,pageindex,answers:[]}}}

czd890 | 园豆:14412 (专家六级) | 2019-02-18 10:02

大侠貌似你的靠谱不过我看不懂你那个冒号后面中括号怎么用

支持(0) 反对(0) 余生请多指教ANT | 园豆:3 (初学一级) | 2019-02-19 16:21

@余生请多指教ANT: 只是表示返回的数据结构,伪代码。理解想法就可以了

支持(0) 反对(0) czd890 | 园豆:14412 (专家六级) | 2019-02-20 09:49
0

这和异步没有关系,没有评论的数据联表查询的结果无非是q表有数据而ass表都是null,这有什么问题吗?

nicky0227 | 园豆:1069 (小虾三级) | 2019-02-18 10:08
0

--查询 左连查询,如果右边表无数据,则会显示左表数据,你的sql是对的,再检查看看,我测试ok
SELECT q.id,q.title,q.detailDesc,q.answerCount,ass.id,ass.answerDate,ass.answerContent FROM questions q LEFT JOIN answers ass ON q.id=ass.qid;

--新增主题
INSERT INTO questions(title,detailDesc,answerCount) VALUES('主题2','这是第二个主题',0);

--新增评论
INSERT INTO answers(qid,answerDate,answerContent) VALUES(2,'2019-02-18 10:08','这是第一条评论');
--评论数量加一
UPDATE questions SET answerCount = answerCount + 1 WHERE id = 2;

三人乐乐 | 园豆:4819 (老鸟四级) | 2019-02-18 17:30
0

看你sql 就算answers 表妹数据 也会查出 questions 的数据的 跟 有没有评论没关系的。
我怎么感觉 你的sql写错了 ! 比方说 questions 表 有1条记录 answers 有两条记录 然后 查出来的时候 就一共有两条 前面查询questions 表的数据时一样的 而answers 表的 就不同。
你这是要一次性加载所有问题 和评论还是 先展示所有问题 然后 点击某一个问题 再展示某问题的所有回答?
至于你说的存进去 是存回复?带上问题的id 去新增一条回答就可以了

^keepHungry$ | 园豆:516 (小虾三级) | 2019-02-18 17:32
0

你这结果集不对啊 没有分组 要分俩次查 你说的异步是前端有人回复完之后立即显示吗 这个ajax就可以做啊

一切都要简单化 | 园豆:210 (菜鸟二级) | 2019-02-19 11:58
0

select q.id,q.title,q.detailDesc,q.anserCount,ass.answerDate,ass.answerContent from questions q LEFT JOIN answers ass ON q.id=ass.qid;";//你们这条话名只查两张表都有的数据
select q.id,q.title,q.detailDesc,q.anserCount,ass.answerDate,ass.answerContent from questions q LEFT JOIN answers ass ON q.id=ass.qid where ass.qid is null;//查询A表有但B表中没有的
随便找个地方判断下B表中没有数据就接着查使用第二条sql语句查询A表中的数据

一世红尘 | 园豆:321 (菜鸟二级) | 2019-03-25 13:35
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册