Mysql Laravel每个发票中重复最多的产品

Mysql Laravel每个发票中重复最多的产品,mysql,laravel,Mysql,Laravel,我有两个表出口发票和售出产品。 这里的关系是一对多(每张发票都有许多已售出的产品) 我想做的是: 我正在尝试获取出口发票中重复次数最多的产品 出口发票表格: +----+-------+ | id | title | +----+-------+ | 1 | 1 | | 2 | 1 | +----+-------+ +----+-------------------+------------+------------+ | id | export_invoice_id |

我有两个表
出口发票
售出产品
。 这里的关系是一对多(每张发票都有许多已售出的产品)

我想做的是: 我正在尝试获取出口发票中重复次数最多的产品

出口发票
表格:

+----+-------+
| id | title |
+----+-------+
| 1  | 1     |
| 2  | 1     |
+----+-------+
+----+-------------------+------------+------------+
| id | export_invoice_id | product_id | sold_price |
+----+-------------------+------------+------------+
| 1  | 1                 | 205        | 12         |
| 2  | 1                 | 205        | 15         |
| 3  | 2                 | 205        | 12         |
| 4  | 2                 | 301        | 20         |
| 5  | 2                 | 302        | 30         |
+----+-------------------+------------+------------+
已售出产品
表:

+----+-------+
| id | title |
+----+-------+
| 1  | 1     |
| 2  | 1     |
+----+-------+
+----+-------------------+------------+------------+
| id | export_invoice_id | product_id | sold_price |
+----+-------------------+------------+------------+
| 1  | 1                 | 205        | 12         |
| 2  | 1                 | 205        | 15         |
| 3  | 2                 | 205        | 12         |
| 4  | 2                 | 301        | 20         |
| 5  | 2                 | 302        | 30         |
+----+-------------------+------------+------------+
现在,最常见的产品报告应该如下所示:

[
 {
   "product_id": "205",
   "occurrences": "2"
 },
 {
   "product_id": "301",
   "occurrences": "1"
 }
]
我所尝试的: 本申报表:

[
 {
   "product_id": "205",
   "occurrences": "3" // WRONG NUMBER
 },
 {
   "product_id": "301",
   "occurrences": "1"
 }
]

对产品进行分组无效

您必须更改分组依据,以便对产品id进行分组,仅此而已。


export_invoices中的标题字段是无用的,对吗?在您给出的表中,205产品是3倍,所以我相信是将该产品作为销售产品之一的发票数量,对吗?我还可以看到,这个查询不依赖于任何值,所以为什么不能编写原始SQL查询?@AlbertoSinigaglia是的,标题字段是useless@AlbertoSinigaglia发生次数是发票中产品的重复次数。。考虑到如果产品在一张发票中重复多次,这意味着只需要一次该退货次数始终等于1!我想要发票中要求最多的产品我使用了您的答案,从
groupBy('salled\u products.product\u id','salled\u products.export\u invoice\u id')
更改为
groupBy('salled\u products.product\u id')
,效果良好。。你能更新你的答案吗?这样我就可以接受了。它可能会帮助某人。
groupBy('sold_products.product_id')