0

私は2つのテーブルを持っています。

表1

    援助   アルファベット      
    1 りんご
    2Aエア
    3 B ボール
    4Cキャット
    5 C ウシ
    6 F フットボール
    7Gゴッド          

テーブル2

    typeId     groupIdの    説明に役立ち   ました     
    1 1 3 4 リンゴの説明
    2 2 3 4 ffdadfdfd
    3 3 5 6 fdsfsdafasdf

typeId 3 と groupId 4 の条件で、各アルファベットの table2 マッピング カウントを選択する必要があります。

この種のクエリを作成しましたが、すべてのアルファベットを取得するわけではありません。これらのアルファベットには、フェッチのみのマッピングがあります。

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

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

このような出力が必要です。

    アルファベット   
     A2
     B 0
     C 0
     F 0 ..など
   
4

1 に答える 1

1

where句にandchecksを追加するtypeIdgroupId、すべての行にこの結合テーブルの値が含まれるようにすることで、左側の結合を内部結合に効果的に変換できます。ただし、ここではそうではありません。タイプとグループのチェックを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
于 2011-11-10T06:04:51.337 に答える