プロが教えるわが家の防犯対策術!

社員テーブルがありまして、同じ苗字の人がどれぐらいいるのかを取得しようとしています。

select mi,na,count(mi) from shain group by mi

これで下のような結果を得るつもりが

青木 章太 2 ←青木が2人いたということ
青木 健吾 2 ←青木が2人いたということ
石田 雄人 5 ←石田が5人いたということ
・・・

下のようなエラーになりました。どうしたらよいでしょうか?
mi,na,count(mi) の3項目を得るのは必須です。

Microsoft OLE DB Provider for ODBC Drivers エラー '80040e14'
[Microsoft][ODBC Microsoft Access Driver] 集計関数の一部として指定された式 'na' を含んでいないクエリを実行しようとしました。

A 回答 (2件)

Selectで記述した項目はGroup byでも必要。



select mi,na,count(mi) from shain group by mi,na

select mi&na,count(mi) from shain group by mi&na
の方が「わかりやすい」という意味で適切かも。
    • good
    • 0

失礼しました。

題意を読み取り違えてました。
1)副問い合わせで、先に「苗字毎の件数が1を越える苗字」を抽出。
2)その結果を受けて、該当の苗字をもつレコードとその件数を表示、ですね。
1)と2)を別クエリで作成するのが、簡単かつ確実。

一文での記述は試験環境が無いので怪しい。
Oracleだったら以下でいけるハズだがACCESSはどうでしょう??
select b.mi, b.na, a.kensuu from syain b,(select mi, count(*) kensuu from shain group by mi having count(*)>1) a
where b.mi=a.mi;
    • good
    • 0
この回答へのお礼

ありがとうございます。
こちらも今はテストできなくなってしまったので、解決しなければまた質問しますのでよろしくおねがいします。

お礼日時:2008/01/07 22:06

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