Closed. This question needs details or clarity。它当前不接受答案。
想改善这个问题吗?添加详细信息并通过editing this post阐明问题。
2年前关闭。
关系
期望
现在,我想获取给定的
这是我想要的:
供应商最大订单数(count(orders.supplier_id))
其中provider.archived = false
其中provider.user_id = 2
其中orders.creator_id = 1
挂号失败
这是我失败的附件,我不确定如何在此查询中添加供应商条件。
所以这就是我想要的
解
因此,最后通过参考Vamsi的答案,在这里您可以找到针对此问题的解决方案的RAW SQL版本和ActiveRecord(Rails)版本:
想改善这个问题吗?添加详细信息并通过editing this post阐明问题。
2年前关闭。
关系
Supplier
->与orders
一对多关系| suppliers |
| ---------- |
| id | name | archived (bool) | user_id |
| orders |
| ---------------- |
| id | supplier_id | creator_id |
期望
现在,我想获取给定的
suppliers
和supplier.user_id
受欢迎的orders.creator_id
列表,并且supplier
不应为archived
(请在问题末尾找到预期的结果)。这是我想要的:
供应商最大订单数(count(orders.supplier_id))
其中provider.archived = false
其中provider.user_id = 2
其中orders.creator_id = 1
挂号失败
这是我失败的附件,我不确定如何在此查询中添加供应商条件。
select supplier_id, COUNT(*) as count_suppliers
from orders
where creator_id = 2
group by orders.supplier_id
order by count_suppliers desc
所以这就是我想要的
suppliers
| id | user_id | archived |
| --- | --------- | ------- |
| 1 | 2 | false |
| 2 | 2 | false |
| 3 | 2 | false |
| 4 | 2 | false |
| 5 | 2 | true |
orders
| id | creator_id | supplier_id |
| -- | --------- | ------------ |
| 1 | 1 | 1 |
| 2 | 1 | 1 |
| 3 | 1 | 1 |
| 4 | 1 | 1 |
| 5 | 1 | 2 |
| 6 | 1 | 2 |
| 7 | 1 | 3 |
| 8 | 1 | 4 |
| 9 | 1 | 4 |
| 10 | 1 | 4 |
| 11 | 1 | 5 |
expected output
| supplier_id | supplier_count |
| 1 | 4 |
| 4 | 3 |
| 2 | 2 |
| 3 | 1 |
解
因此,最后通过参考Vamsi的答案,在这里您可以找到针对此问题的解决方案的RAW SQL版本和ActiveRecord(Rails)版本:
RAW SQL VERSION
SELECT o.supplier_id, COUNT(*) AS count_suppliers
FROM suppliers s
JOIN orders o ON s.id=o.supplier_id
WHERE s.user_id=2
AND s.archived=FALSE
AND o.creator_id=2
GROUP BY o.supplier_id
ORDER BY count_suppliers DESC
LIMIT 5
ActiveRecord (Rails) Version
Supplier
.joins(:orders)
.where(user_id: 2, archived: false, orders: { creator_id: 2 })
.group("orders.supplier_id")
.order("count_all DESC")
.limit(limit)
.count
最佳答案
您可以join
表和计数。
select p.supplier_id, COUNT(*) as count_suppliers
from purchase_orders p
join suppliers s on s.id=p.supplier_id
where s.user_id=2 and p.creator_id=1 and s.archived='False'
group by p.supplier_id
order by count_suppliers desc
10-08 13:28