2012-03-28 88 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