Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/255.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL/PHP:按不同表中的最高票数排序_Php_Sql_Mysql - Fatal编程技术网

SQL/PHP:按不同表中的最高票数排序

SQL/PHP:按不同表中的最高票数排序,php,sql,mysql,Php,Sql,Mysql,我需要向游客推荐与他们所看到的相似的物品。因此,我请求使用SQL查询(从“categories”表)获取具有相同类别的项。下面是我实际使用的正确代码: SELECT c2.itemID FROM categories c1 JOIN categories c2 ON c1.catID = c2.catID WHERE c1.itemID = :id AND c2.itemID <> :id GROUP BY c2.itemID ORDER BY count(c2.itemID) DE

我需要向游客推荐与他们所看到的相似的物品。因此,我请求使用SQL查询(从“categories”表)获取具有相同类别的项。下面是我实际使用的正确代码:

SELECT c2.itemID
FROM categories c1
JOIN categories c2 ON c1.catID = c2.catID
WHERE c1.itemID = :id
AND c2.itemID <> :id
GROUP BY c2.itemID
ORDER BY count(c2.itemID) DESC;
选择c2.itemID
来自类别c1
在c1.catID=c2.catID上连接类别c2
其中c1.itemID=:id
和c2.itemID:id
按c2.itemID分组
按计数排序(c2.itemID)说明;
它返回按类别匹配数排序的项(从包含“itemIDs”和“catid”的表中)。例如:项目1有类别2,3,4,5,6,项目2有类别2,3,4,5,6,项目3有类别3,5,6,那么如果我将项目1(访客正在查看的项目)与项目2和项目3进行比较,我需要先得到项目2,然后是项目3,因为项目2比项目3有更多的类别匹配

现在:我还需要以最高票数排序结果。投票的项目在不同的表格中。“投票”表包含两列:“itemID”和“total_value”,“total_value”为最终费率

那么,如何根据类别匹配的数量以及不同表格中的最高投票数对结果进行排序

更新:如果表中的项目数为8000+。我认为推荐最相似的项目最好的办法是先按项目和确切的类别进行排序,然后再按投票进行排序。有什么想法吗?谢谢

选择c2.itemID
SELECT c2.itemID
FROM categories c1
JOIN categories c2 ON c1.catID = c2.catID
JOIN votes v ON v.itemID=c1.itemId
WHERE c1.itemID = :id
AND c2.itemID <> :id
GROUP BY c2.itemID
ORDER BY count(c2.itemID), v.total_value DESC;
来自类别c1 在c1.catID=c2.catID上连接类别c2 在v.itemID=c1.itemID上加入投票 其中c1.itemID=:id 和c2.itemID:id 按c2.itemID分组 按计数排序(c2.项目ID),v.总值描述;
主要排序标准是计数还是投票?而且
投票
表中每个'itemID'包含一行还是每个'itemID'包含多行,并且您只想查看最高值?与上一个问题一样,提供示例数据会有所帮助。投票表中每个“itemID”只包含一行。我认为排序标准应该是先分类,然后投票,但我不确定。你能发布这两个选项吗?我需要做一些测试,以检查哪个订单标准更适合项目推荐。。你怎么看?请阅读更新:我认为推荐最相似的项目最好的办法是先按项目和确切的类别进行排序,然后再按投票进行排序。在这种情况下需要更新所有代码我想…我得到的结果不是按最高速率排序的。。我的意思是,例如,我有一个2号到位率为6的项目和一个3号到位率为6.2的项目。。然后将4号物品放置到位,比率为5.9,然后将计数(c2.itemId)和v.total_值顺序切换为v.total_值、计数(c2.itemId)描述;