如何使用MySQL计算可用的总票数和售出的总票数?

如何使用MySQL计算可用的总票数和售出的总票数?,mysql,Mysql,我需要使用MySQL生成以下输出,它可以计算每个活动的可用门票总数和售出门票总数 event_id event_name start_date tickets_available tickets_sold ------------------------------------------------------------------------- 1 Test Event 1 2017-04-01 200 20 2

我需要使用MySQL生成以下输出,它可以计算每个活动的可用门票总数和售出门票总数

event_id  event_name     start_date    tickets_available   tickets_sold
-------------------------------------------------------------------------
1         Test Event 1   2017-04-01    200                 20
2         Test Event 2   2017-04-25    100                 30
我的表格如下:

表:活动

event_id  user_id    event_name     start_date    event_active   
-------------------------------------------------------------------------
1         47         Test Event 1   2017-04-01    0                
2         47         Test Event 2   2017-04-25    0 
表:票证类型

ticket_type_id  event_id  ticket_type quantity_released quantity_remaining
---------------------------------------------------------------------------
1               1         General     100               90
2               1         VIP         100               90
3               2         General     50                30
4               2         VIP         50                40
这里是我到目前为止的SQL查询

SELECT events.event_id, events.event_name, events.start_date, events.event_active,
(
    SELECT SUM(ticket_types.quantity_released) 
    FROM ticket_types
    WHERE ticket_types.event_id = events.event_id
) AS tickets_available,
(
    SELECT (ticket_types.quantity_released - ticket_types.quantity_remaining)
    FROM ticket_types
    WHERE ticket_types.event_id = events.event_id
) AS tickets_sold
FROM events
INNER JOIN ticket_types
ON events.event_id=ticket_types.event_id
WHERE user_id = 47;
但是,这不起作用,因为tickets\u available和tickets\u Selled列的逻辑不正确


有人能帮我解决这个问题吗?

由于我缺乏SQL格式方面的知识,这个格式不是很好,但这可能是您的解决方案

SELECT  events.event_id,
        events.event_name,
        events.start_date,
        events.event_active,
        SUM(ticket_types.quantity_released) AS available,
        SUM(ticket_types.quantity_released) - SUM(ticket_types.quantity_remaining) AS sold
FROM events
INNER JOIN ticket_types
ON events.event_id = ticket_types.event_id
GROUP BY events.event_id
WHERE user_id = 47;

由于我缺乏SQL格式方面的知识,所以这种格式不是很好,但这可能是您的解决方案

SELECT  events.event_id,
        events.event_name,
        events.start_date,
        events.event_active,
        SUM(ticket_types.quantity_released) AS available,
        SUM(ticket_types.quantity_released) - SUM(ticket_types.quantity_remaining) AS sold
FROM events
INNER JOIN ticket_types
ON events.event_id = ticket_types.event_id
GROUP BY events.event_id
WHERE user_id = 47;