gpt4 book ai didi

php - 当一张表中有多个相同 ID 时按一个 ID 排序

转载 作者:行者123 更新时间:2023-11-30 22:38:13 24 4
gpt4 key购买 nike

我有 4 个表:

  1. 用户
  2. 论坛
  3. Discussies(讨论)
  4. Forumberichten(消息)

Forumberichten(消息)表包含 Discussion(讨论)表的 ID,作为对讨论 react 的引用。如果对讨论有 5 个 react ,则表中有 5 个具有相同值的 ID。

我如何显示每个不同讨论的回显以及对它的最新 react ?

我试过 ORDER BY、DISTICT、GROUP BY 和其他东西,但我无法让它工作。我不断地从同一个讨论或一个讨论中得到更多的输出与原始输入,而不是对它的最新 react 。

<?php
// DISCUSSIES FORUM SCHRIJVEN

$sql="SELECT forumberichten.discussieid,forumberichten.datum,discussies.discussieid,discussies.titel,discussies.forumid,discussies.highlight,forums.forumid,forums.forumnaam,users.userid,users.userimage,users.username FROM forumberichten,discussies,forums,users WHERE forumberichten.discussieid=discussies.discussieid AND discussies.forumid=forums.forumid AND forumberichten.userid=users.userid AND forums.forumid=1 ORDER BY forumberichten.bericht_id DESC LIMIT 3";
$result = $conn->query($sql) or die ("The query could not be completed. try again");
if ($result->num_rows > 0) {

echo "
<br>
<table id='forumschrijvenklein'>
<tbody>
<tr>
<td bgcolor='#1E1E1E'></td>
<td nowrap bgcolor='#1E1E1E'>&nbsp;</td>
<td nowrap bgcolor='#1E1E1E' class='sterrenkleur'>Discussie</td>
<td nowrap bgcolor='#1E1E1E' class='sterrenkleur'>Laatste reactie</td>
<td nowrap bgcolor='#1E1E1E' class='sterrenkleur'>Datum</td>
<td nowrap bgcolor='#1E1E1E' class='sterrenkleur'></td>
</tr>
";

// output data of each row
while ($row = $result->fetch_assoc()) {

echo"
<tr>";if ($row["highlight"] == '1') {
echo " <td bgcolor='#FC6'></td>";
} else {
echo "<td bgcolor='#1E1E1E'></td>";
}
echo"
<td nowrap bgcolor='#1E1E1E'>";if ($row["userimage"] == '') {
echo "
<a href='user.php? id=" . $row['userid'] . "'</a><img src='Images/users/nopicture.png' alt='nopicture' class='userimage-tooltip-small' title='".$row['username']."''></a>";
} else {
echo "<a href='user.php? id=" . $row['userid'] . "'</a><img src='Images/users/".$row['userimage']."' class='userimage-tooltip-small' title='".$row['username']."''></a>";
}
echo"</td>
<td bgcolor='#1E1E1E'><a href='discussie.php? id=" . $row['discussieid'] . "'>".$row["titel"]."</a></td>
<td bgcolor='#1E1E1E'><a href='user.php? id=" . $row['userid'] . "'</a>".$row["username"]."</a></td>
<td nowrap bgcolor='#1E1E1E'>"; echo date("d-m-y H:i",strtotime($row["datum"]));"
";
echo"
</td>
<td nowrap bgcolor='#1E1E1E'></td>
</tr>
";
}
}
echo "
<tr>
<td bgcolor='#1E1E1E'>&nbsp;</td>
<td bgcolor='#1E1E1E'>&nbsp;</td>
<td bgcolor='#1E1E1E'><img src='Images/lijntransparant.png' width='315' height='2'></td>
<td bgcolor='#1E1E1E'><img src='Images/lijntransparant.png' width='140' height='2'></td>
<td bgcolor='#1E1E1E'>&nbsp;</td>
<td bgcolor='#1E1E1E'>&nbsp;</td>
</tr>
</tbody>
</table>
";
}
?>

我尝试了以下方法,但它仍然不起作用...:

$sql = "SELECT * 
FROM (((forumberichten

JOIN discussies
ON discussies.discussieid = forumberichten.discussieid)

JOIN users
ON users.userid = forumberichten.userid)

JOIN forums
ON forums.forumid=forumberichten.forumid)

GROUP BY discussies.discussieid
HAVING forumberichten.forumid = 3 AND forumberichten.bericht_id = max(forumberichten.bericht_id)
ORDER BY forumberichten.bericht_id DESC";

最佳答案

我们希望在每个独特 线程上发布最新 帖子,我们可以通过...做到这一点

使用 GROUP BYHAVING

SELECT * 
FROM Posts
JOIN Discussions
on Discussions.discussion_id = Posts.discussion_id
GROUP BY Discussions.discussion_id
HAVING Posts.post_time = max(Posts.post_time)
ORDER BY Posts.post_time DESC

这是一个例子!确保你用它来修改你自己的,虽然它很简单。我没有数据库来对此进行测试,但我使用自己的数据和不同的列进行了测试并且它有效。

注意:这假设两个表中的每个 Id 都相同。它还假定 post_time 是某个时间值,该值随着帖子的更新而增加(即 SQL 时间戳)。

关于php - 当一张表中有多个相同 ID 时按一个 ID 排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31811220/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com