我的数据库包含问题和答案。问题具有ID(intQAID),并且响应具有ID(intResponseID)。 intRespondID与它响应的intQAID ID相同。每个数据库条目都有自己的ID,即intPostID。
我正在尝试做的是编写一个查询来获取所有这些信息并使用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>";
}
但是我怎样才能让它在同一个声明中发布答案?
应该这样输出:
Question 1:
Answer 1:
Question 2:
Answer 2:
Question 3:
Answer 3:
etc....
答案 0 :(得分: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
我不知道你为什么要这样设计你的桌子。如果每个问题只能有一个答案,那为什么不能简单地连续两列,一个包含问题,另一个包含答案?
答案 1 :(得分:0)
尝试使用JOIN语句。只要你的问题和答案是一对一的,你就应该能够一举拉下所有东西。
答案 2 :(得分:0)
如果每个问题只有一个答案,那么你应该通过使用intRespondID和intQAI将问题表与answers表相结合来获取一个查询中的数据。
然后,通过while循环的每次旅行都有一个,无论你想要的第一行,a,a,你想要的第二行,最后是a。因此,通过循环的一次旅行不必只显示一行输出。