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”…很抱歉,您的解决方案似乎比我的解决方案更简洁…我想到了加入,但对加入组的方式有疑问。谢谢!我应该指定该事件。名称是主键