2017-11-16 11 views
-2
PEAK (NAME, ELEV, DIFF, MAP, REGION) 
CLIMBER (NAME, SEX) 
PARTICIPATED (TRIP_ID, NAME) 
CLIMBED (TRIP_ID, PEAK, WHEN_CLIMBED) 

で設定:SQLiteの:見つける私はマークとメアリーは</strong></p> <p>を登ってきた私はこれをしなかったが、それは動作しないこと<strong>ピークを見つける必要がある特定の値

 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

トリプリケート:https://stackoverflow.com/questions/47336635/sqlite-doing-a-difference-of-two-columnsおよびhttps://stackoverflow.com/questions/47310285/sqlite-finding-set-on "-a-limited-set#comment81571126_47310285 – tonypdmtr

+0

" **動作しません** "(デスクトップから煙が出ているのですか?サーバーがクラッシュしましたか?答えは1000で間違っていますか? )** "** not work **"を定義してください。将来の質問でその表現を使用しないことをお勧めします。 –

答えて

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 
+0

しかし、このアプローチは「うまくいかない」という質問によれば、 –

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構文の使用に注意してください。

0

を行うことのピークを見つけたい場合は、

select * 
    from participated 
    INNER JOIN climbed ON participated.trip_id= climbed.trip_id 
    where participated.name IN ("MARY" , "MARK") 

OR適切OR

select * 
    from participated 
    INNER JOIN climbed ON participated.trip_id= climbed.trip_id 
    where participated.name = "MARY" OR participated.name = "MARK" 
関連する問題

 関連する問題