アプリ版:「スタンプのみでお礼する」機能のリリースについて

下記のようなグループ化した結果を表示するSQL文を作りました。

SELECT メーカコード FROM 部品表 GROUP BY メーカコード, 部品番号 HAVING ((部品番号)="BUHIN1")

これを実行するとちゃんと結果が出るのですが、その結果の件数を求めるにはどのようなSQL文を追加すれば宜しいのでしょうか? COUNT文を使うと出来そうなのですが、

SELECT メーカコード, COUNT(メーカコード) AS CNT FROM 部品表 GROUP BY メーカコード, 部品番号 HAVING ((部品番号)="BUHIN1")

とやるとメーカコードの個別件数が表示されてしまいます。
どうぞよろしくお願いします。

A 回答 (4件)

こんにちわ。



Oracle であれば、こんな書き方ができるかと思います。
SQL> SELECT COUNT(*) FROM (SELECT メーカコード FROM 部品表 GROUP BY メーカコード, 部品番号 HAVING ((部品番号)='BUHIN1'));

でも件数を取得するのであれば、わざわざSQL 文を発行
するよりも、SQL%ROWCOUNT (PL/SQL) や、
sqlca.sqlerrd[2] (Pro*C) を使った方が DB に余計な負荷がかからなくて
良いと思います。

この回答への補足

早速のご回答ありがとうございます!
私の使用環境は、Access97 です。
教えて頂いた SELECT COUNT(*) FROM (ぐるーぷ化のSQL) をSQL Serverに対し実行するとFROM文の誤りです、と表示されてしまいます。

Accessならクエリで段組みすれば解決しますが、将来的にSQL Serverへ接続する事を考え、SQL文のみで解決しようと思っております。

現在はレコードセット取得後、RecordCountプロパティにてデータ件数を調べています。
COUNT文を使ったほうが負荷が少ないと思ったのですがそんな事もなさそうですね・・。

補足日時:2004/02/03 16:27
    • good
    • 1

AccessやSQL Serverでできるかどうかわかりませんが、


Oracleの場合は以下のようなサブクエリーを使えます。

SELECT COUNT(*) FROM (
SELECT メーカコード
FROM 部品表
GROUP BY メーカコード, 部品番号
HAVING ((部品番号)="BUHIN1")
)
    • good
    • 1
この回答へのお礼

ご回答ありがとうございます!急な仕事でご返答が遅くなり申し訳ありません。
Accessですと上記のSQL文は実行できませんでした。
Accessのサブクエリーの使い方を調べてみます。
どうもありがとうございました。

お礼日時:2004/02/11 13:13

ちょっと思ったのですが


SELECT メーカコード FROM 部品表 GROUP BY メーカコード, 部品番号 HAVING ((部品番号)="BUHIN1")
のクエリーを作成してそのクエリーを元に集計関数を使用したクエリーを作成するのはどうでしょう?
例えば
SELECT count(メーカコード) as カウント FROM 部品表 GROUP BY メーカコード, 部品番号 HAVING ((部品番号)="BUHIN1")
->クエリー1

select count(カウント) from クエリー1
質問のいとにそっています&スマートでないですかね...。
    • good
    • 1
この回答へのお礼

ご回答ありがとうございます!お返事が遅くなり申し訳ありません。
現在手元で確認できる環境ではない為実行できませんが、
Accessのサブクエリーの使い方を参考にさせていただきます。
どうもありがとうございました!

お礼日時:2004/02/11 13:16

やりたいことは、


「部品番号が"BUHIN1"である部品(レコード)を持つメーカの数の抽出」
ということでよろしいでしょうか?

手元にAccessが無いので、確認できませんが、一般的には下記の様なSQLで抽出できると思います。

-----------------------------------------
SELECT count(DISTINCT メーカコード) FROM 部品表 WHERE ((部品番号)="BUHIN1");
-----------------------------------------

部品番号 = "BUHIN1" の条件はグループ化してもしなくても影響がないので、Where句でも問題ありません。

この回答への補足

ご回答ありがとうございます!
やりたいことはおっしゃる通りです。
教えて頂いたSQL文をAccess97で実行したところ、エラーになってしまいました。
試しに DISTINCT を COUNT の前に配置したところエラーは出なくなったのですが、正しい結果が出てきません。
グループ化しなくてもよい方法で再度考えてみたいと思います。ありがとうございます!

補足日時:2004/02/04 10:19
    • good
    • 0

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

このQ&Aを見た人はこんなQ&Aも見ています

関連するカテゴリからQ&Aを探す


このQ&Aを見た人がよく見るQ&A