【发布时间】:2021-06-09 14:24:21
【问题描述】:
我想查找包含一种或多种产品的订单:A、B、C。
预期结果是:
order_id
101 (explanation: product A, B, C)
103 (explanation: product A)
106 (explanation: product A, B)
107 (explanation: product B)
订单
| id | deleted_at |
|---|---|
| 101 | null |
| 102 | null |
| 103 | null |
| 104 | null |
| 105 | 5-5-2021 |
| 106 | null |
| 107 | null |
Order_items
| id | order_id | product |
|---|---|---|
| 1 | 101 | A |
| 2 | 101 | A |
| 3 | 101 | B |
| 4 | 101 | C |
| 5 | 102 | A |
| 6 | 102 | D |
| 7 | 103 | A |
| 8 | 104 | D |
| 9 | 105 | D |
| 10 | 105 | B |
| 11 | 106 | A |
| 12 | 106 | B |
| 13 | 107 | B |
| 14 | 107 | B |
| 15 | 107 | B |
我试过这样写代码,但它仍然包含其他不相关的命令。
select Orders.id
from Orders left join Order_items on Orders.id=Order_items.order_id
where Orders.deleted_at is null
group by Orders.id
having count(distinct(case
when Order_items.product=A then 1
when Order_items.product=B then 1
when Order_items.product=C then 1 end)) between 1 and 3;
【问题讨论】:
标签: mysql sql combinations calculation