【问题标题】:Formulating a MySql join query with aggregates用聚合制定 MySql 连接查询
【发布时间】:2012-04-07 01:57:55
【问题描述】:

假设我有一个包含 4 个表的数据库:

  1. 用户:(个人数据库)
    • 身份证
    • 用户名
  2. 课程:(课程名称,如数学/健身房等)
    • 身份证
    • 课程名称
  3. payments(包含带有课程id的付款和部分付款[整个付款分为12部分])
    • 身份证
    • lesson_id
    • 部分
    • 价值
  4. 组:(将用户排列到课程中)
    • 身份证
    • lesson_id
    • user_id

我的问题是如何查询数据库以获取一个表格,其中列出了所有参加 ex 的人的列表。数学(或任何其他课程 ID)及其名称(可能是 LEFT JOIN)和每个期间所有付款的总和。所选课程 ID 的表头应如下所示:

用户名 |付款1 |付款2 | ...(3-11)... |付款 12

我不知道如何进行这项工作。也许我的 MySQL 方法不合适,或者我应该将其划分为更多查询以获得更大的灵活性。

感谢您的宝贵时间!

【问题讨论】:

  • 您要求为 user_lesson 提供所有付款的总和,但随后您说您想要为每笔付款提供一列。所以..你想要哪个还是两个都想要?
  • 令人困惑...您的表格标题不包含您请求的 SUM 列。
  • 抱歉,如果问题不够清楚 - 我来自波兰,我的英语不太好 :) 在付款表中,我有一个 part 列,其中包含一个数字(1- 12) 描述付款部分。用户可以分期付款,这就是为什么我想知道它是付款的哪一部分并将其相加,所以我有一个表格,其中包含用户名和不同时期的每次付款总和。它应该像 user_=>user_name ; _payment1 => 来自payments 的所有付款的总和,其中part = 1; ...等所有部分。

标签: mysql relational-database database-schema


【解决方案1】:
select users.id, users.user_name,lessons.id, lessons.lesson_name,
    (SELECT SUM(value) FROM payments
     WHERE payment.lesson_id = lessons.id)
FROM users
INNER JOIN groups ON (groups.user_id = users.id) 
INNER JOIN lessons ON (lessons.id = groups.lesson_id)
WHERE .....

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-12-15
    • 2023-02-03
    • 1970-01-01
    • 1970-01-01
    • 2021-07-03
    • 1970-01-01
    • 1970-01-01
    • 2023-03-28
    相关资源
    最近更新 更多