2010-09-02 81 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