2012-03-28 109 views
1

我的數據庫包含問題和答案。問題有一個ID(intQAID),並且響應有一個ID(intResponseID)。 intRespondID與它所響應的intQAID ID相同。數據庫中的每個條目都有自己的ID,即intPostID。聲明幫助(PHP)

我想要做的是寫一個查詢,將抓住所有這些信息並使用while語句將其發佈到網站。但是,在while循環結束之前,結構必須是問題,並且是下面的答案。

我可以得到問題後:

$question = mysql_query("SELECT *, 
(SELECT cUsername FROM tblUsers tblU WHERE Q2.intPosterID = tblU.intUserID) AS username, 
(SELECT DATE_FORMAT(dPostDateTime, '%b %e %Y %H:%i')) AS post_time 
FROM tblQA Q2 WHERE intResponseID = 0 
ORDER BY Q2.dSortDateTime DESC, Q2.intQAID DESC LIMIT 40"); 

while($row = mysql_fetch_array($question)) 
{ 
echo "<tr class='forum'>"; 
echo "<td class='forum'>" . substr($row['cBody'], 0, 150) . "</td>"; 
echo "<td class='forum'>" . $row['cCategory'] . "</td>"; 
echo "<td class='forum'>" . $row['username'] . "</td>"; 
echo "<td class='forum'>" . $row['post_time'] . "</td>"; 
echo "</tr>"; 
} 

但我怎麼能得到它後,答案在同一個while語句?

應該輸出像這樣:

Question 1: 
    Answer 1: 
Question 2: 
    Answer 2: 
Question 3: 
    Answer 3: 
etc.... 
+2

逃離你的輸出! – 2012-03-28 21:46:40

+0

每個問題總是一個答案嗎? – 2012-03-28 21:48:02

+1

請停止使用古老的'mysql_ *'函數 – 2012-03-28 21:48:25

回答

0

嘗試使用JOIN語句。只要你的問題和答案是一對一的,你應該能夠一舉拉出一切。

http://dev.mysql.com/doc/refman/5.0/en/join.html

+0

問題和解答在同一張表中。另一個表是用戶信息。 – BigMike 2012-03-28 21:53:15

+0

你正在使用一張桌子在正確的軌道上。像'回聲'​​問題​​'。 $ row ['question']。 '';回波'​​答案​​'。 $ row ['answer']。 '';'應該可以工作 – 2012-03-28 22:01:24

1

加入本身的表:

SELECT 
*, 
(SELECT cUsername FROM tblUsers tblU WHERE Q2.intPosterID = tblU.intUserID) AS username, 
(SELECT DATE_FORMAT(dPostDateTime, '%b %e %Y %H:%i')) AS post_time 
FROM  tblQA Q2 
JOIN  tblQA AS tblQAjoin ON tblQAjoin.intRespondID = Q2.intPostID 
WHERE  Q2.intResponseID = 0 
ORDER BY Q2.dSortDateTime DESC, Q2.intQAID DESC 
LIMIT  40 

我不知道你爲什麼會想設計自己的表這種方式,雖然。如果每個問題只能有一個答案,爲什麼不簡單地連續兩列,一個包含問題,另一個答案?

0

如果每個問題只有一個答案,那麼您應該通過使用intRespondID和intQAI將answers表與answers表加入到一個查詢中來獲取數據。

然後,每一次通過while循環的行程都有一個,無論你想在第一行,a,a,你想要的第二行,最後是a。因此,通過循環的一次行程不必顯示一行輸出。

+0

所有帖子都在一張表中。所以我不需要加入。我更感興趣的是如何編寫while語句以特定格式寫出問題和答案 – BigMike 2012-03-28 21:57:12

+0

是的,您確實需要連接:連接不一定涉及兩個表的操作。您也可以在同一張表中將一行(在這種情況下是問題)連接到另一行(本例中爲答案)。如果你把它們放在同一行,當然你不必加入。看到我上面的答案。 – Daan 2012-03-29 07:00:37