我有这样的架构
...
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;
答案 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
可以包含多个记录..因此,在这种情况下,此查询将返回错误..