我的数据库中的表: 1。员工
2.Aircraft
3.Certified
查询:我需要找到飞行员名称,开斋节,飞机名称,cruising_range,其中飞行员被证明可以飞行超过3架飞机。我写了一个查询,它有效,但我想知道如果有一个简单的方法来实现这个,因为我的查询似乎很复杂。
我的查询是:
修改:更正了表名。
答案 0 :(得分:3)
如果您可以假设认证中的每个AID在飞机上都有相应的值,那么就可以这样做:
SELECT ename,employee.eid,aname,crusing_range
FROM employee JOIN certified
ON employee.eid = certified.eid
JOIN aircraft
ON certified.aid = aircraft.aid
WHERE exists(select 1 FROM certified t
WHERE t.eid = employee.eid
GROUP BY t.eid HAVING COUNT(*) >= 3)
答案 1 :(得分:1)
啊,伙计,不要在你的列前面加上你的表名。只需将员工ID列设为id not eid
我会试试这个:
SELECT <columns>
FROM aircraft A
LEFT JOIN employee E ON E.eid = A.eid
LEFT JOIN certified C ON C.aid = A.aid
Where SUM(A.eid) > 3
我在手机上,但我希望它有所帮助。
关键信息在飞机表中,所以从那开始,然后加入你想要额外位的表。在SELECT中删除一个明显的员工ID也会停止重复。
重新思考表名。