

查询:对于每名获得超过三架飞机认证的飞行员,查找的开斋节和最大巡航范围-他/她所认证的每架飞机的。
我写的查询:
select certified.eid,cruising_range
from certified join employee
on employee.eid=certified.eid
join aircraft
on certified.aid=aircraft.aid
having count(certified.eid)>3;输出:

它只显示了一个巡航范围,但id 10的飞行员被4飞机认证。如何得到其他行?
发布于 2016-03-18 09:56:21
你的问题主要有两个方面:
将两者结合起来:
SELECT eid, cruising_range FROM aircraft JOIN certified USING (aid) JOIN (
SELECT eid FROM certified GROUP BY eid HAVING COUNT(*) > 3
) t USING (eid)发布于 2016-03-18 09:53:54
使用group by certified.eid。
count是一个聚合运算符,它只返回一行(没有group子句)
select certified.eid,cruising_range
from certified join employee
on employee.eid=certified.eid
join aircraft
on certified.aid=aircraft.aid
group by certified.eid`
having count(certified.eid)>3;如果不按聚合函数分组,则只返回一行
https://stackoverflow.com/questions/36081123
复制相似问题