gpt4 book ai didi

PHP/MySQL 进入前 10 名

转载 作者:行者123 更新时间:2023-11-29 03:04:43 24 4
gpt4 key购买 nike

用户可以输入自己的偏好来寻找其他用户。现在,根据该输入,我想获得与偏好最匹配的前 10 个。

我的想法是:

1) 创建解析用户偏好的选择语句

if ($stmt = $mysqli->prepare("SELECT sex FROM ledenvoorkeuren WHERE userid = you"))
$stmt->bind_result($ownsex);

2) 创建一个 select 语句来检查除您自己以外的所有用户

if ($stmt = $mysqli->prepare("SELECT sex FROM ledenvoorkeuren WHERE userid <> you"))
$stmt->bind_result($othersex);

3) 匹配select语句1和select语句2

while ($stmt->fetch()) {
$match = 0;
if ($ownsex == $othersex) {
$match = $match + 10;
}
// check next preference

4) 如果偏好匹配,则从值为 0 的变量开始 -> 变量 + 10%

问题是,我可以为所有成员执行此操作,但我如何才能选择前 10 名???我想我需要在 SQL 语句中执行此操作,但我不知道如何...

当然,这只是我的一种偏好,也是我代码的一个 super 简单版本,但您会明白的。大约有 15 个首选项设置。

//编辑//

我还想看看屏幕上的比赛评分是多少!

最佳答案

好吧,这从一开始就是个好问题,所以我投了赞成票,然后浪费了大约 1 小时来生成以下内容:)

数据

我在这里的实验中使用了名为 test 的数据库和名为 t 的表。

您可以在下面找到显示该表结构(3 个int 列,1 个char(1) 列)和完整数据的屏幕截图

source table with data

如您所见,一切都相当简单 - 我们有 4 列,id 作为主键,还有一些记录(行)。

我们想要实现的目标

我们希望能够根据一些复杂的条件从该表中选择一组有限的行,包括将多个列的值与所需参数进行比较。

解决方案

我决定为此创建一个函数。 SQL语句如下:

use test;

drop function if exists calcMatch;

delimiter //

create function calcMatch (recordId int, neededQty int, neededSex char(1)) returns int
begin
declare selectedQty int;
declare selectedSex char(1);

declare matchValue int;
set matchValue = 0;

select qty, sex into selectedQty, selectedSex from t where id = recordId;

if selectedQty = neededQty then
set matchValue = matchValue + 10;
end if;

if selectedSex = neededSex then
set matchValue = matchValue + 10;
end if;

return matchValue;
end//
delimiter ;

小解释

函数计算一个特定记录与指定参数集的匹配程度,并返回一个 int 值作为结果。值越大 - 匹配越好。

函数接受 3 个参数:

  • recordId - 我们需要计算结果(匹配值)的记录的id
  • neededQty - 需要的数量。如果记录的数量匹配,结果将增加
  • neededSex - 需要的性别值,如果记录的性别匹配,结果将增加

函数通过id从表中选择指定的记录,将结果匹配值初始化为0,然后将每个必需的列与所需的值进行比较。如果比较成功,则返回值增加 10。

现场测试

live test of the function

希望这能解决您的问题。随意将其用于您自己的项目,添加所需的参数以发挥作用并将它们与表中所需的列进行比较。

干杯!

关于PHP/MySQL 进入前 10 名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17593204/

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