Mysql 这是合法的SQL查询吗?

Mysql 这是合法的SQL查询吗?,mysql,sql,Mysql,Sql,我有一个这样的模式 ... Event(Name, Date, TotalSeats) Reservation(EventName, Date, NumSeats) ... 我想提取每个活动的可用座位总数,下面的查询是合法的吗 SELECT R.EventName, (SELECT TotalSeats FROM Event WHERE Name = R.EventName) - SUM( NumSeats )

我有一个这样的模式

...
Event(Name, Date, TotalSeats)
Reservation(EventName, Date, NumSeats)
...
我想提取每个活动的可用座位总数,下面的查询是合法的吗

SELECT R.EventName, (SELECT TotalSeats
                     FROM Event
                     WHERE Name = R.EventName) - SUM( NumSeats )
FROM Reservation R
GROUP BY EventName;

编写此查询的更传统的方法是使用
join

SELECT r.EventName, e.TotalSeats - SUM( r.NumSeats )
FROM Reservation r JOIN
     Event e
     ON e.Name = r.EventName
GROUP BY r.EventName, e.TotalSeats;

假设
事件
表中没有重复项,您的版本应该在MySQL中工作。

您在子查询中编写的查询

SELECT TotalSeats FROM Event WHERE Name = R.EventName 

可以由多个记录组成。。因此,在这种情况下,此查询将返回错误。

尝试时会发生什么?我会说否。(没有表p,因此没有列p.EventName可供选择。)另外,请注意,子选择不允许返回超过1行@jarlh编辑了这个。现场翻译模式的问题(用意大利语“Prenotazione P”“Reservation R”…很抱歉,您的解决方案似乎比我的解决方案更简洁…我想到了加入,但对加入组的方式有疑问。谢谢!我应该指定该事件。名称是主键