2016-04-01 16 views
1

Veritabanları için biraz yeniyim. Ben sorguda aşağıdakiVe sql listesinden

select cm.BatsmanNum 
from cricketmatch cm 
where cm.BatsmanNum plays with all (select b.BowlerNum from bowler b 
            where b.MaxBowlingSpeed = 64); 

Benim tablolar yapmaya çalışıyorum:

Bowler 

Bowler_no Max_bowling_speed 
     1    70 
     2    89 
     3    93 
     4    70 
     5    89 
     6    93 
     7    89 
     8    93 

cricketmatch 

Row_no Batsman_no Bowler_no Match_no Runs_scored 
    1   1   1  2   50 
    2   5   2  2   12 
    3   1   4  1   34 
    4   3   1  5   56 
    5   4   1  5   32 
    6   5   5  2   67 
    7   5   2  5   10 
    8   5   7  5   3 

Açıklama:

yukarıdaki sorgu olanlar (batsmen) TÜM bowlers ile oynarsa (cricketmatch tüm batsmen almak gibidir select b.BowlerNum from bowler b where b.MaxBowlingSpeed = 64). Bütün liste için bir açıklama ve ifade mümkün mü? Bunu nasıl yapabilirim? Kafam karıştı.

cevap

0

İstediğiniz şeyin basit bir İÇERİK olduğunu düşünüyorum, doğru mu?

select cm.BatsmanNum 
from cricketmatch cm 
inner join bowler b 
on cm.Bowler_no = b.Bowler_no 
where b.MaxBowlingSpeed = 64; 
0

Tüm bowling yapan oyuncularla oynanan tüm yarasaları bulmak istersiniz. Bu, ilişkisel cebirin bölünme işleminin oldukça basit bir şekilde uygulanmasıdır.

 
select cm.Batsman-no 
from cricketmatch as cm 
where not exists(select Bowler-no 
       from bowler 
       where Bowler-no not in (select crm.Bowler-no 
             from cricketmatch as crm 
             where crm.Batsman-no = cm.Batsman-no)) 
0

Şunları yapabilirsiniz: sonucu almak için, yanıt için

Divsion Operator

aşağıdaki sorguyu kullanın: (Eğer bir kez geçmesi istiyorsanız) İşte

link sorgu altında kullanmak.

select cm1.Batsman_no ,count(distinct cm1.Bowler_no) As BowlerCOunt 
    from #Cricketmatch CM1 
    inner join bowler b on CM1.Bowler_no=B.Bowler_no -- and Max_bowling_speed >=65 
    GROUP by cm1.Batsman_no 
    having count(distinct cm1.Bowler_no) = 
    (
    select count(distinct cm2.Bowler_no) from #Cricketmatch CM2 -- list of all Bowler 
    )