質問です。
テーブルAとBに下記データが存在した場合、AにいてBにいなかったデータは「0」AにいてBにもいた場合のデータはその件数を抽出するSELECT文を教えて下さい。
テーブルA   テーブルB
A1       A1
A2       A1
A3       A1
A4       A3
A5       A4
----------
結果
----------
A1 3
A2 0
A3 1
A4 1
A5 0

A 回答 (2件)

すみません。

訂正です。

フィールドAのデータとテーブルBのデータのカウント結果を抽出することで
必要な結果を取り出すことができます。

 ↓

テーブルAのフィールドデータと、テーブルBのフィールドデータのカウント結果を抽出することで
必要な結果を取り出すことができます。
    • good
    • 0

こんばんは。


「自信なし」ですが、回答させていただきます。
(いつもはOracleを使ってますので…。理屈はSQLServerといえ同じだと思います。
自信がなかったので、AccessのSQLクエリで検証してみました(^^;)

テーブルAのレコードデータが主体、という前提でよろしいでしょうか?
ならば、抽出対象とするフィールドを使って、テーブルAとテーブルBとを
左辺外部結合(LEFT JOIN)します。
この時点で、

 テーブルAの全レコード+テーブルBの一部(テーブルAに存在するデータを持つもの)

が抽出できるようになります。

それから、テーブルAのフィールドデータでグループ化をかけ、
フィールドAのデータとテーブルBのデータのカウント結果を抽出することで
必要な結果を取り出すことができます。

SQL文は、以下の通りになります。

SELECT テーブルA.フィールド, Count(テーブルB.フィールド)
FROM テーブルA LEFT JOIN テーブルB ON テーブルA.フィールド = テーブルB.フィールド
GROUP BY テーブルA.フィールド
ORDER BY テーブルA.フィールド;
    • good
    • 0
この回答へのお礼

親切な回答ありがとうございます。
理屈がわかりましたので早速試したいと思います。
ありがとうございました。

お礼日時:2005/04/05 11:04

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


人気Q&Aランキング