PEAK (NAME, ELEV, DIFF, MAP, REGION)
CLIMBER (NAME, SEX)
PARTICIPATED (TRIP_ID, NAME)
CLIMBED (TRIP_ID, PEAK, WHEN_CLIMBED)
我需要找到 Mark和Mary攀登的高峰
我做了这个,但它没有工作:
select *
from participated, climbed
where participated.name="MARY" or "MARK" and participated.trip_id= climbed.trip_id
我也尝试过:
Group By name, peak
Having name="MARY" or "MARK"
我该怎么做?
答案 0 :(得分:0)
您可以使用IN
select *
from participated
INNER JOIN climbed ON participated.trip_id= climbed.trip_id
where participated.name IN ("MARY" , "MARK")
或正确的OR
select *
from participated
INNER JOIN climbed ON participated.trip_id= climbed.trip_id
where participated.name = "MARY" OR participated.name = "MARK"
答案 1 :(得分:0)
如果您只想找到两者 climed的峰值,请执行
select peak
from participated
join climbed on participated.trip_id = climbed.trip_id
group by peak
having sum(name='MARY') > 0
and sum(name='MARK') > 0
答案 2 :(得分:0)
如果你只想要达到峰值,你可以这样做:
select c.peak
from climbed c join
trip t
on c.trip_id = t.trip_id
where name in ('MARY', 'MARK')
group by c.peak
having count(distinct name) = 2;
请注意使用正确的JOIN
语法。