根据另一个表中具有雄辩的列表选择十个顶级类别

inc*_*ick 5 php mysql sql laravel eloquent

我有三个表:uploads,categories和一个many-to-many称为表category_upload.

表格如下所示:

**categories**

id
name

**uploads**

id
name
downloads(integer)

**category_upload**

id
category_id
upload_id
Run Code Online (Sandbox Code Playgroud)

每次下载"上传"时,下载列中的值都会增加1.

我想做什么,但无法弄清楚如何开始是根据表中的downloads列选择前10个类别uploads.因此,如果downloads列的总数对于来自给定类别的所有上载而言是最大的,则此类别应为第一,依此类推至第十.

这可以通过雄辩或只是SQL来实现吗?任何提示表示赞赏!

以下是我在模型中建立关系的方式:

分类:

public function uploads(){
        return $this->belongsToMany('App\Upload');
    } 
Run Code Online (Sandbox Code Playgroud)

上传:

public function category(){
    return $this->belongsToMany('App\Category');
}
Run Code Online (Sandbox Code Playgroud)

tyr*_*yro 1

Select category_id, uploads
From (
    Select category_id, SUM(downloads) as uploads
    From uploads as u
    Left join upload_category as uc on uc.id=u.upload_id
    Left join category as c on c.id=uc.category_id
    Group by  category_id    )as t
  Order by uploads desc
  Limit 10
Run Code Online (Sandbox Code Playgroud)