我有這3個表:SQL子查詢疑問句:
1)Sailors (sid:INT, sname:VARCHAR(30), rating:INT, age:INT)
2)Boats (bid:INT, bname:VARCHAR(30), color:VARCHAR(10))
3)Reserves (bid:INT, sid:INT, day:DATE)
我不知道如何建立一個查詢,顯示: 已預訂至少2艘不同顏色船隻的船員的姓名!
我有這3個表:SQL子查詢疑問句:
1)Sailors (sid:INT, sname:VARCHAR(30), rating:INT, age:INT)
2)Boats (bid:INT, bname:VARCHAR(30), color:VARCHAR(10))
3)Reserves (bid:INT, sid:INT, day:DATE)
我不知道如何建立一個查詢,顯示: 已預訂至少2艘不同顏色船隻的船員的姓名!
您可以創建一個組,每個水手,然後要求至少有2種不同顏色的組:
select s.sid
, s.sname
, count(distinct b.color) as NumberOfBoatColorsReserved
from Reserves r
join Sailors s
on s.sid = r.sid
join Boats b
on b.bid = r.bid
group by
s.sid
, s.sname
having count(distinct b.color) >= 2
有可能是一個更有效的方式來做到這一點,但這裏是一個快速乾燥的解決方案:
SELECT sname FROM Sailors
JOIN Reserves USING (sid)
JOIN Boats USING (bid)
GROUP BY sname, color
HAVING COUNT(sname) >= 2;
加選擇不同的出價:
SELECT bid FROM Sailors
JOIN Reserves USING (sid)
JOIN Boats USING (bid)
HAVING COUNT(bid) >= 3;
其中3代表數據庫中的水手總數。這可以單獨查詢,很簡單地使用COUNT
嘗試。然後嘗試編輯你的問題。 –
包括您的示例數據和預期輸出,並嘗試嘗試。 – HaveNoDisplayName