2010-09-02 49 views
1

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

我能确定哪些答案去我想这问题,因为responseID =帖子ID

编写一些PHP代码,将在下面的格式显示数据:

问:
- 答案
- 回答
- 回答

问:
- 答案
- 答案
- 答案

...等等

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

因此,每个帖子都有一个QAID。一个问题会有一个类别,而答案的答案ID将等于问题QAID。

这将抓住所有的问题:
SELECT * FROM tblQA那些类别NOT NULL

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

回答

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]; 
    } 
} 
+0

我不能改变数据库,因为现在硬编码使用数据库的应用程序。 – BigMike 2010-09-02 15:29:42

+0

希望上面的代码有助于:) – Wolfy 2010-09-03 06:53:32

+0

上面的代码与昨天不一样) – Wolfy 2010-09-03 11:46:59

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..." 

有许多的JOIN是你可以根据你的RDBMS做。大多数情况下,当存在冲突或价值时,加入的哪个“边”优先处理。

了解更多关于MySQL这里:http://www.tizag.com/mysqlTutorial/mysqljoins.php

+0

亚历克斯,谢谢。我在这里有点菜鸟。我可以看一个小例子吗? – BigMike 2010-09-02 03:36:19

+0

问题和答案在同一张表'tblQA'中,所以这是行不通的。苏里,我应该指出这一点。 – BigMike 2010-09-02 03:41:27

+0

我不会推荐MySQL文档;他们很难理解为初学者。希望这可以帮助! – 2010-09-02 03:41:58