gpt4 book ai didi

php - 根据另一个表按值之和对表数据进行排序

转载 作者:行者123 更新时间:2023-11-29 10:24:41 25 4
gpt4 key购买 nike

我想知道是否可以根据另一个表中的值的总和对表进行排序。我面临的问题如下:我在我的数据库上运行此查询:

<?php
$sql = "SELECT thread_id, SUM(upvoted) AS upvoted FROM upvotes GROUP BY thread_id ORDER BY upvoted LIMIT :start, {$number_threads}";
$stmt = $conn->prepare($sql);
$stmt->bindValue(':start', (int) $start, PDO::PARAM_INT);
$stmt->execute();

此后我将进行这个 while 循环

while($result = $stmt->fetch()) {
// do something with the following variables
$result['thread_id'];
$result['thread_content'];
$result['thread_ownerid'];
}

但是表upvotes 中不存在thread_id、thread_content 和thread_ownerid 列。它们仅存在于名为线程的表中。解决这个问题最直接的方法就是加入。然而,连接的问题是表 upvotes 中的值都是非唯一的。因此,线程中唯一的 thread_id 可以出现在 5432 行中,并在 upvotes 表中的 upvoted 列中具有相应的 -1 en 1 值。

我解决这个问题的想法是:创建一个带有索引/键的数组/字典,将 thread_id 与其所有赞成票的总和链接起来,然后将该数组/字典与表线程连接起来。

这是访问所需变量的一种理论上的方法,但任何允许我访问它们的方法都将不胜感激。

预先非常感谢您花时间回答我的问题!

最佳答案

是的,您可以这样做,但您必须将此值添加为选择结果中的新列,如下所示:

select a.id,a.other,
(select count(*)
FROM table2 AS B
WHERE b.id=a.id) AS c
FROM table1 AS a
ORDER BY c;

C 值将是其他表中某些值的计数(或总和)

关于php - 根据另一个表按值之和对表数据进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48542272/

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