我有两个表,一个包含事件的详细信息(名称,时间等),另一个包含客户为每个事件预订的记录。我希望能够查询数据库并获得一组结果,其中包含事件表中的所有字段,以及每个事件的预订数量,如下所示:
event_name,event_time,total_spaces_available,number_of_bookings
目前我通过在PHP中循环结果来解决这个问题,但是可以在SQL中做到吗?
我希望能够做到这样的事情:
SELECT *, COUNT(SELECT * FROM bookings WHERE event_id=<VARIABLE>) FROM events
但我不知道语法
我在MySQL
非常感谢任何帮助!
答案 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