gpt4 book ai didi

mysql - 按类别中项目的下载次数对类别进行排序

转载 作者:行者123 更新时间:2023-11-29 07:17:28 24 4
gpt4 key购买 nike

我有两个表:

项目

| id | name   | downloads | category_id |
|----|--------|-----------|-------------|
| 1 | Item 1 | 5 | 1 |
| 2 | Item 2 | 7 | 1 |
| 3 | Item 3 | 23 | 2 |

类别

| id | name       |
|----|------------|
| 1 | Somecategory |
| 2 | Someothercategory |
| 3 | Somecategory2 |

我目前正在使用基本查询:

$cats = Category::where('name', 'like', '%'.$query.'%')
->orderBy('parent', 'desc')
->orderBy('name', 'asc')
->take(10)
->get();

但我希望类别按其项目的下载数量排序。

因此,如果有人搜索“some”,首先会返回 Someothercategory,因为它的项目(项目 3)下载量最多。

谢谢!

最佳答案

这是一个连接表格、按类别名称分组并使用下载总和的问题。

使用 SQL,可以使用以下方法解决:

SELECT c.name, SUM(downloads) AS downloads
FROM items i
INNER JOIN categories c ON i.category_id=c.id
WHERE c.name LIKE '%other%'
GROUP BY c.name
ORDER BY downloads DESC

下一步是搜索如何使用 Eloquent 来实现这一目标(如果您愿意的话)。

如果您想简化事情,您还可以在包含此代码的数据库上创建一个 View 。这样你只需要:

SELECT name, downloads 
FROM viewCategoryDownloads
WHERE c.name LIKE '%other%'
ORDER BY downloads DESC

关于mysql - 按类别中项目的下载次数对类别进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37424901/

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