mysql - 多对多关系中的多个 GROUP_BY 和 GROUP_CONCAT
问题描述
我有两张桌子:
顾客:
| CustomerID | Pickups | StartTime | EndTime |
| ---------- | ------- | --------- | ------- |
| a | 1 | 10:00 | 10:03 |
| b | 2 | 10:02 | 10:05 |
| c | 5 | 10:07 | 10:10 |
| d | 7 | 10:12 | 10:14 |
| e | 0 | 10:12 | 10:14 |
| f | 2 | 10:15 | 10:17 |
| g | 1 | 10:18 | 10:20 |
结帐:
| CheckoutID | Purchases | Time |
| ---------- | --------- | ---- |
| 1 | 1 | 10:01|
| 2 | 1 | 10:02|
| 3 | 1 | 10:04|
| 4 | 2 | 10:08|
| 5 | 3 | 10:09|
| 6 | 4 | 10:13|
| 7 | 0 | 10:19|
我加入这些表时Checkouts.Time BETWEEN Customers.StartTime AND Customers.EndTime
我想要的最终输出:
| CustomerIDs | PurchaseIDs | Pickups | Purchases |
| ----------- | ----------- | ------- | --------- |
| a,b | 1,2,3 | 3 | 3 |
| c | 4,5 | 5 | 5 |
| d,e | 6 | 4 | 7 |
| f | null | 2 | null |
| g | 7 | 1 | 0 |
我在实现这一点时遇到了问题,因为一个客户可能有多个结账,而一个结账可能涉及多个客户。我很好地为每个 CheckoutID 或 CustomerID 分别做一个 GROUP BY,但我真的迷失在第一步之后如何组合数据。
解决方案
推荐阅读
- c++ - 跨目标传播库依赖项
- html - 单个正则表达式来删除 HTML 标签和剩余的空格
- reactjs - 使用 React 构建 REST 后端 API 调用的最佳方式是什么?
- vb.net-2010 - 在 datetimepicker 中使用什么事件
- sql-server-2017 - 将列添加到一个巨大的表
- docusignapi - Docusign 电子邮件地址未定义
- email - Drupal 8 自定义模块停止发送电子邮件按电子邮件地址过滤
- vue.js - Nuxt.js:结合过渡(到,从)和进入/离开事件
- ruby - 有人可以解释一下如何注入(Hash.new(0)) { |total, bigram| 总计 [bigram] += 1; 总计 }.sort_by { |_key, value| 值 }.reverse.to_h 有效吗?
- c# - 列表框中的按钮