gpt4 book ai didi

php - Ask-Answer-Comment 数据库的 Mysql 查询

转载 作者:行者123 更新时间:2023-11-29 02:04:15 27 4
gpt4 key购买 nike

在像 stachexchange 项目这样的问题/答案/评论的数据库结构中,数据库模式可以是用 FK 连接的三列。这似乎是理想的,但我想知道检索问题数据的最有效查询是什么。将通过 question_id 的 WHERE 子句简单地检索和列出答案。

我的问题是如何列出嵌套在相应答案下的评论?我正在处理 PHP while 循环以列出答案和评论的子列表。

我脑海中的一个非常基本的结构。我的问题的目的也是找到想法数据库结构;因此,这只是一个建议。

CREATE TABLE questions (
question_id int(11) NOT NULL AUTO_INCREMENT,
title varchar(255),
content text,
PRIMARY KEY (question_id);

CREATE TABLE answers (
answer_id int(11) NOT NULL AUTO_INCREMENT,
question_id int(11) REFERENCES questions(question_id),
content text,
PRIMARY KEY (answer_id);

CREATE TABLE comments (
coment_id int(11) NOT NULL AUTO_INCREMENT,
question_id int(11) REFERENCES questions(question_id),
answer_id int(11) REFERENCES answers(answer_id),
content text,
PRIMARY KEY (coment_id);

最佳答案

假设一个表结构如下(简化)

Questions Table
QID | Question

Answers Table
AID | fQID | Answer

Comments Table
CID | fAID | comment

fQID = 问题表的外键

fAID = Answers 表的外键

以下查询将选择特定问题的所有评论

select comment from question join answers on QUI=fQUID join comments on AID=fAID where QID='$questionID'

以下查询将根据答案 ID 选择评论

select aid, answer, comment from question join answers on QUI=fQUID join comments on AID=fAID where AID='$answerID'

编辑:

对于答案下的嵌套评论,使用类似这样的东西(你需要修改这个,这个很粗糙)

$sql = 'select comment, cid, aid, answer from question join answers on QUI=fQUID left join comments on AID=fAID where QID='$questionID' order by AID';
$result = mysql_query($sql);

$row = mysql_fetch_array($result);
echo "<div>" . $row['answer'];
$current = $row['aid'];
do{
if($current != $row['aid']){
print "</div>\n<div>" . $row['answer'];
$current = $row['id'];
}

$current = $row['aid'];
if($row['cid'] != null){
print "<div>" . $row['comment'] . "</div>";
}
}while($row = mysql_fetch_array($result));

print "</div>";

关于php - Ask-Answer-Comment 数据库的 Mysql 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9339314/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com