gpt4 book ai didi

php mysql 检查供应商是否有 3 个连续低评级

转载 作者:可可西里 更新时间:2023-11-01 08:10:14 26 4
gpt4 key购买 nike

在我的软件评级表上,我有 4 个字段。id 自增rvid 供应商 ID评级日期评分实际数值评分

在过去的几个月里,我已经用它做了很多,但这次我被难住了,我无法在脑海中清楚地了解最好的方法。我想做的是找出供应商是否有 3 个低“连续”评级。如果他们的最后三个评分小于 3,那么我想标记他们。

我已经玩了几个小时了,所以我想我会问(不是答案),而是一些路径方向只是为了插入我前进,我在这里陷入了思考。

我已经尝试过 GROUP BY 和几个 ORDER BY 但这些尝试并不顺利,所以我想知道这是否不是 mysql 答案而是 php 答案。换句话说,也许我只需要利用我目前所拥有的,然后通过 usort 等移动到 php 方面,然后那样做。

这是我到目前为止所做的,我也确实选择了 id,起初我认为这是获得最后一个连续的最好方法,但后来我有了一个小突破,如果他们连续有 3 个 id 并不重要,所以我把它从查询中去掉了。

  $sql = "SELECT `rvid`, `rating` FROM `vendor_ratings_archive` WHERE `rating` <= '3' ORDER BY `rvid` DESC";

给我这个

Array
(
[0] => Array
(
[rvid] => 7
[rating] => 2
)

[1] => Array
(
[rvid] => 5
[rating] => 1
)

[2] => Array
(
[rvid] => 5
[rating] => 0
)

[3] => Array
(
[rvid] => 5
[rating] => 3
)

)

这只是我扔在田里的样本,这里只有 4 行,而在现场将会有很多行。但基本上这告诉我这些是表中评级较低的供应商。这就是我感到难过的地方。我只能在查询中进行一种排序,这就是为什么我认为我需要接受它并移至 php 端以完成它的原因。

我想我首先需要用 php 对元素进行排序,然后查看连续的三个元素是否是同一供应商 (rvid)。

希望这是有道理的。我的脑袋疼哈哈...

更新 - 这是所有使用 * 的表数据

Array
(
[0] => Array
(
[id] => 7
[rvid] => 7
[ratedate] => 2016-05-01
[rating] => 2
)

[1] => Array
(
[id] => 8
[rvid] => 5
[ratedate] => 2016-05-01
[rating] => 1
)

[2] => Array
(
[id] => 6
[rvid] => 5
[ratedate] => 2016-05-01
[rating] => 0
)

[3] => Array
(
[id] => 5
[rvid] => 5
[ratedate] => 2016-05-01
[rating] => 3
)

)

最佳答案

这是您可以开始处理此问题的一种方法 - 完全在 SQL 中:

  • 获取供应商的最后评级。 ORDER BY date DESC,限制 1。
  • 获得供应商的倒数第二个评级。 ORDER BY date DESC,limit 1,OFFSET 1。

然后编写一个查询,对前两个表进行左连接。您将拥有一个包含三列的数据集:

  • 供应商编号
  • 最后评分
  • 倒数第二个评分

然后你可以写一个表达式“如果 column1 是 <3 并且 column2 < 3,那么这个新列是真的”

您应该能够相对轻松地将其扩展到三列。

关于php mysql 检查供应商是否有 3 个连续低评级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36975788/

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