MySQL使用sum获取表

时间:2016-05-01 15:22:06

标签: php mysql

我试图从三个不同的表中得到一个表。我设法计算了付费字段,但无法获得正确的费用值。

The Customer Table
    ╔════╦═════════════╗
    ║ ID ║    NAME     ║
    ╠════╬═════════════╣
    ║  1 ║ John Smith  ║
    ║  2 ║ Jim Jimmers ║
    ╚════╩═════════════╝
    The Event table
    ╔════╦═════════════╦═════════════╦═════════════╗
    ║ ID ║    Event    ║ Decription  ║    Fee      ║
    ╠════╬═════════════╬═════════════╬═════════════╣
    ║  1 ║ Rock Music  ║ Interseting ║          80 ║
    ║  2 ║ Pop music   ║ Interseting ║          90 ║
    ╚════╩═════════════╩═════════════╩═════════════╝


    The Payment table
    ╔════╦═════════════╦═════════════╦═════════════╗
    ║ ID ║already Paid ║ Customer_ID ║ Event_ID    ║
    ╠════╬═════════════╬═════════════╬═════════════╣
    ║  1 ║  0          ║           1 ║          1  ║
    ║  2 ║ 90          ║           1 ║          2  ║
    ║    ║             ║             ║             ║
    ║  3 ║ 90          ║           2 ║          2  ║
    ║  4 ║ 80          ║           2 ║          1  ║
    ╚════╩═════════════╩═════════════╩═════════════╝

我试图让这张桌子付费指的是他已支付的费用和费用是指他必须支付的事件

    ╔═══════╦══════════╦═══════╗
    ║Name   ║ paid     ║ Fee   ║
    ╠═══════╬══════════╬═══════╣
    ║John Sm║       90 ║  170  ║
    ║Jim Jim║      170 ║  170  ║
    ║       ║          ║       ║
    ║       ║          ║       ║
    ║       ║          ║       ║
    ║       ║          ║       ║
    ╚═══════╩══════════╩═══════╝

1 个答案:

答案 0 :(得分:2)

未经测试的:

select c.name, sum(p.paid), sum(e.fee)
  from customer c
  join payment  p on c.id       = p.customer_id
  join event    e on p.event_id = e.id
group by c.name;