SQL:查找至少预订了3次的海员的姓名
我有一张桌子:SQL:查找至少预订了3次的海员的姓名,sql,Sql,我有一张桌子: Sailors (sid, sname, rating, age) Boats (bid, bname, color) Reserves (sid, bid, date) 我认为可以这样做的问题是: SELECT Sailors.sname FROM Sailors, Reserves WHERE 3 <= COUNT(Reserves.sid = Sailor.sid) 选择sealers.sname 来自水手、预备队 其中3可以执行此操作- SELECT Sail
Sailors (sid, sname, rating, age)
Boats (bid, bname, color)
Reserves (sid, bid, date)
我认为可以这样做的问题是:
SELECT Sailors.sname
FROM Sailors, Reserves
WHERE 3 <= COUNT(Reserves.sid = Sailor.sid)
选择sealers.sname
来自水手、预备队
其中3可以执行此操作-
SELECT Sailors.sname
FROM Sailors
JOIN Reserves
ON Sailors.sid = Reserves.sid
GROUP BY Sailors.name
HAVING count(Reserves.bid) >= 3;
编辑:上述逻辑在水手姓名级别/粒度上聚合(使用GROUPBY子句)因此,可以在聚合级别上统计每个seller的保留数量,然后使用having子句(用于聚合比较)检查seller级别的保留数量的给定标准,您可以使用JOIN Reserves,因为字段具有相同的名称sid
。使用(sid)加入保留区。你能解释一下这个逻辑吗?同意,但我通常喜欢使用这个语法,因为它更通用。@Marcindelta-在我的回答中添加了对逻辑的解释。