gpt4 book ai didi

php - 如何连接多个表并将结果返回给屏幕?

转载 作者:行者123 更新时间:2023-11-30 22:27:49 26 4
gpt4 key购买 nike

我有四个表:

users (id, username, password);
topics (id, uid, name, date);
subjects (id, uid, tid, name, date);
posts (id, sid, tid, content, date);

我想回应每个主题,其中包含主题和帖子的数量,按日期排序。

我的查询是这样的:

$tquery = 'SELECT users.id, users.username, 
topics.id, topics.name, topics.date, topics.uid,
subjects.tid, subjects.id, posts.sid FROM topics
INNER JOIN users ON topics.uid = users.id
INNER JOIN subjects ON subjects.tid = topics.id
INNER JOIN posts ON posts.sid = subjects.id
ORDER BY topics.date DESC';
$res = mysqli_query($connection, $tquery);

我用来回应主题的 PHP 代码如下:

while ($row = mysqli_fetch_assoc($res)){
echo '<table><tr class="heading">
<th title="Hozzáadta: admin '.$row["username"].'"><a href="/php/forum/topics.php?id='.$row["id"].'" class="topic-title">'.$row["name"].'</a></th>
<th>Témák: '.count($row["tid"]).'</th>
<th>Hozzászólások: '.count($row["sid"]).'</th>
<th>Hozzáadva: '.$row["date"].'</th>
</tr></table>';
}

不幸的是,这是错误的,因为它返回了具有相同主题名称的表,并且它也没有对主题和帖子进行计数。请帮助我,我几天前就遇到了这个问题。

最佳答案

在 SQL 中使用 group bycount 而不是在 php 中:

SELECT users.id, users.username, topics.id, topics.name, topics.date, topics.uid, count(subjects.tid), subjects.id, count(posts.sid) FROM topics
left JOIN users ON topics.uid = users.id
left JOIN subjects ON subjects.tid = topics.id
left JOIN posts ON posts.sid = subjects.id
group by topics.id
ORDER BY topics.date DESC

关于php - 如何连接多个表并将结果返回给屏幕?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34731916/

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