2011-11-10 16 views
0

私は2つのテーブルを持っています。私は条件と各アルファベットの表2のマッピング数を選択する必要がこの種のクエリをmysql5に書き込む方法は?

TABLE1

 

    aid alphabet  Name 
    1  A   Apple 
    2  A   Air 
    3  B   Ball 
    4  C   Cat 
    5  C   Cow 
    6  F   Footbal 
    7  G   God   

table2の

 

    did aid typeId groupId description 
    1  1  3   4  apple description 
    2  2  3   4  ffdadfdfd 
    3  3  5   6  fdsfsdafasdf 

は、私は、クエリのこの種を書い3とのgroupId 4

をTYPEIDすべてのアルファベットを取得していません。これらのアルファベットには、そのフェッチのみがマッピングされています。

select a.alphabet, count(did) from table1 a left join table2 b on a.aid=b.aid where b.typeId=3 and b.groupId=4 group by a.alphabet

どのように私は、クエリのようなものを書くことができますか?

このような出力が必要です。 where句でtypeIdgroupIdチェックを追加することにより

 

    alphabet Count 
    A   2 
    B   0 
    C   0 
    F   0 .. etc 
+0

私はCount'は、私はあなたが何を意味するか、スタンドの下にできなかった – Teneff

+0

申し訳ありません、あなたのクエリを修正する必要がありますよう.. '回数(b.did)に'数(入札) '変更:( – learner

+0

@Teneffと思います。で間違って入札しました。申し訳ありませんが、適切な結果を提供していません – learner

答えて

1

は、あなたが効果的に内部結合に参加し、必要とすることによって、すべての行が、この中に値を持って参加しました左の表を作っています。但し、こちらはではなくの場合はこちらです。タイプチェックとグループチェックをon句(結合内)に移動すると、目的の結果が得られます。

select 
    a.alphabet, 
    count(b.did) 
from 
    table1 a 
    left join table2 b 
     on a.aid=b.aid and b.typeId=3 and b.groupId=4 
group by 
    a.alphabet 
+0

表の説明に「入札」列はありません – Teneff

+0

ありがとうございました。 –