我有两个表,一个有产品,一个有利于保持简单,我会显示相关的行。
表格产品
ID
table favourit
查询中不需要user_id
PRODUCT_ID
我想要的是在favourit表中找到最常见的十大产品。我想我必须这样做
favourit::groupBy(product_id)
和
favourit::orderBy(ammount(sum of all product_ids), desc)
但是我怎么能得到ammount(所有product_ids的总和)来订购?此查询(使用groupby)也可以与products表连接,以便我在一个查询中获得产品吗?
答案 0 :(得分:2)
您应该能够像这样编写查询: 这是Caveman42 Sql查询的改编。
favourit::select('product_id', DB::raw('COUNT(product_id) as count'))
->groupBy('product_id')
->orderBy('count', 'desc')
->take(10);
然后,我不确定如何与您的产品建立关系。
编辑:如果您的产品型号中设置了您的关系。您应该能够使用with()函数加入product表:
favourit::with('product')
->select('product_id', DB::raw('COUNT(product_id) as count'))
->groupBy('product_id')
->orderBy('count', 'desc')
->take(10);
答案 1 :(得分:0)
从SQL
的角度来看,这就是您从偏好表中获得前10名产品的方式:
Select TOP 10
Product_id
,COUNT(Product_id) as [Count]
From
favorit
Group By
Product_id
Order By
COUNT(Product_id) desc
这将为您提供前10个Product_id,并在最高位置对它们进行排序。
我对PHP
不太熟悉,所以我无法告诉你如何实施它,抱歉:(