0

これにより、本来よりも多くの問題が発生しています。

次のサンプルテーブルがあります。

____________________       ____________      
|   Name|   Number |       | Number   |
|_______|__________|       |__________|
| Alice |     1    |       |    1     |
| Bob   |     2    |       |    1     |
|_______|__________|       |__________|

結果を次のようにしたい:

_____________________________________
| Name   |   Number  | Count(Number) |
|________|___________|_______________|
| Alice  |     1     |      2        |
| Bob    |     2     |      0        |
|________|___________|_______________|

私は行ったり来たりしていますが、これはそれほど難しいことではないと確信しています。私は何かが欠けていると思います。

ゴードンの答えを変更しました:

 select name, number count(t2.number)
 from table1 t1, 
 table2 t2 
 where t1.number = t2.number (+)
 group by t1.number;
4

1 に答える 1

1

結合と集計が必要です。ただし、結合はleft outer joinすべての行を保持する必要があります。

select name, number, count(t2.number)
from table1 t1 left outer join
     table2 t2
     on t1.number = t2.number
group by t1.name, t1.number;

また、count()は 2 番目のテーブルで NULL 以外の値をカウントしているため、0一致しない場合に取得できます。

于 2013-08-07T14:19:13.557 に答える