组织问题&来自php和mysql数据库的答案

时间:2010-09-02 03:23:34

标签: php mysql schema

在我的数据库中,我有问题和答案。每个帖子都有一个'postID',只有答案有一个'responseID',它引用了问题的'postID'。

我可以确定自responseID = postID

以来哪些答案归结为哪个问题

我想编写一些PHP代码,以下列格式显示数据:

问题:
- 回答
- 回答
- 回答

问题:
- 回答
- 回答
- 回答

......等等

附加信息:
问题和答案在同一个tblQA表中。列是QAID,PosterID,ResponseID,TimeStamp,Category,Body。

所以,每个帖子都有QAID。一个问题将有一个类别,答案将有一个等于QAID问题的responseID。

这会抓住所有问题:
    SELECT * FROM tblQA WHERE category IS NOT NULL

这会抓住所有答案:
    SELECT * FROM tblQA WHERE ResponseID IS NOT NULL

2 个答案:

答案 0 :(得分:3)

不需要循环。您可以执行使用JOIN

的SQL查询

如果您的表格如下:

QuestionID       Question
123              "What do you think about..."
124              "Who is your favorite..."

AnswerID         Answer
123              "I think that..."
123              "I tend to think..."
124              "My favorite..."

您可以制作类似

JOIN查询

SELECT * FROM Questions LEFT JOIN Answers ON QuestionID = AnswerID

这未经过测试,但这就是理论。这会给你带来什么样的结果就像是

QuestionID       Question                        Answer
123              "What do you think about..."    "I think that..."
123              "What do you think about..."    "I tend to think..."

根据您的RDBMS,您可以执行许多JOIN个操作。当冲突或null值出现冲突时,大多数情况都与联接的“侧面”有关。

在此处详细了解MySQLhttp://www.tizag.com/mysqlTutorial/mysqljoins.php

答案 1 :(得分:0)

试试这个:

$sql="SELECT * FROM tblQA WHERE category IS NOT NULL";
$result = mysql_query($sql);
while($row = mysql_fetch_assoc($result))
{
   echo $row[Body];
   $sql1="SELECT * FROM tblQA WHERE ResponseID IS NOT NULL and qaid =  $row[responseid]";
   $result = mysql_query($sql1);
   while($row = mysql_fetch_assoc($result))
   {
      echo $row[Body];
   }
}