SQL - 根据查询结果从一个表中获取计数

时间:2014-01-10 22:21:53

标签: mysql sql

我有两个表,一个包含事件的详细信息(名称,时间等),另一个包含客户为每个事件预订的记录。我希望能够查询数据库并获得一组结果,其中包含事件表中的所有字段,以及每个事件的预订数量,如下所示:

event_name,event_time,total_spaces_available,number_of_bookings

目前我通过在PHP中循环结果来解决这个问题,但是可以在SQL中做到吗?

我希望能够做到这样的事情:

SELECT *, COUNT(SELECT * FROM bookings WHERE event_id=<VARIABLE>) FROM events

但我不知道语法

我在MySQL

非常感谢任何帮助!

2 个答案:

答案 0 :(得分:3)

使用相关子查询的可能解决方案:

SELECT e.event_name,
  e.event_time,
  e.total_spaces_available,
  (SELECT count(*) FROM bookings b WHERE b.event_id=e.event_id) AS number_of_bookings
FROM events e

编辑:正如评论中提到的,这可能不如加入解决方案那么高效。 虽然我相信最新的MySQL无论如何都会将它们转换为连接。

答案 1 :(得分:1)

执行group by

Select event_name, event_time, total_spaces_available, count(1) number_of_bookings
  from events 
    inner join booking on events.id = bookings.event_id
  group by event_name, event_time, total_spaces_available