这是一个合法的SQL查询吗?

时间:2015-01-30 15:32:28

标签: mysql sql

我有这样的架构

...
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;

2 个答案:

答案 0 :(得分:2)

编写此查询的更传统方式是使用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;

假设Event表中没有重复项,您的版本应该可以在MySQL中运行。

答案 1 :(得分:0)

您在子查询中编写的查询..

SELECT TotalSeats FROM Event WHERE Name = R.EventName 

可以包含多个记录..因此,在这种情况下,此查询将返回错误..