グループ化した件数を知るには?

解決


稲兎  2004-04-09 11:19:35  No: 112765  IP: [192.*.*.*]

現在、このようなデータを用いています。
データの項目は発行コード・業者・品名・規格・数量です。

0001  A社  苺 特級  1パック
0001  A社  苺 1級  1パック
0001  A社  苺 2級  1パック
0002  B社  苺 特級  1パック
0002  B社  苺 特級  1パック
0002  B社  桃       1パック

これを発行コードに従いグループ化しました。

0001  A社  苺 特級  1パック
0001  A社  苺 1級  1パック
0001  A社  苺 2級  1パック
-----------------------------------
0002  B社  苺 特級  2パック
0002  B社  桃       1パック

このデータ件数を把握したいのですが、発行コードを選択して
0001はレコード数3件
0002はレコード数2件
というように把握したいと思っています。
RecordCountでは、−1となってしまい把握出来ません。
SQLにてCOUNTを利用すると0002には対応するのですが、0001だと結果が1となってしまいました。

SQLにてグループ化してしまうとレコード件数は把握出来ないのでしょうか?
ご指導宜しくお願い致します。

編集 削除
へいぽ  2004-04-09 11:40:19  No: 112766  IP: [192.*.*.*]

> 0001  A社  苺 特級  1パック
> 0001  A社  苺 1級  1パック
> 0001  A社  苺 2級  1パック
> -----------------------------------
> 0002  B社  苺 特級  2パック
> 0002  B社  桃       1パック

こうなるってことは、
発行コード・業者・品名・規格でグループ化して
数量は SUM を使用しているのですか?

発行コードのみでグループ化した場合

発行コード
0001
0002
となってしまい、上のようにはなりませんよ。

現在はどのようなクエリを作成しているのですか?

編集 削除
稲兎  2004-04-09 11:46:13  No: 112767  IP: [192.*.*.*]

説明不足にて申し訳ありません。
本来のクエリは複数のテーブルより作成しています。
数量はへいぽさんの書き込み通り、Sumを使用しています。

    Dim strHyouji As String
        strHyouji = "select tecMitsumori.iDay,hCD,mCD,maker,hinmei,katashiki,hosoku,Sum(suuryou) As suuryou,tani,isogi, " & _
                    "tecGyousya.gCD,tecGyousya.yuubin,tecGyousya.juusyo,tecGyousya.gyousya,tecGyousya.tantou,tecGyousya.tel,tecGyousya.fax," & _
                    "tecTantou.tID,tecTantou.syozoku,tecTantou.namae," & _
                    "tecBumon.bCD,tecBumon.bumon1 " & _
                    "from tecMitsumori " & _
                    "inner join tecGyousya on tecMitsumori.gCD=tecGyousya.gCD " & _
                    "inner join tecTantou on tecMitsumori.tID=tecTantou.tID " & _
                    "inner join tecBumon on tecMitsumori.bCD=tecBumon.bCD " & _
                    "Where(tecMitsumori.hCD='" & Mid(lstGyousya.Text, 15, 11) & "') " & _
                    "And (tecMitsumori.kyoka=0) And (tecMitsumori.hakkou=0) And (tecMitsumori.torikeshi=0) " & _
                    "group by tecMitsumori.iDay,hCD,mCD,maker,hinmei,katashiki,hosoku,suuryou,tani,isogi,kyoka,hakkou,torikeshi,tecMitsumori.gCD,tecMitsumori.tID,tecMitsumori.bCD," & _
                    "tecGyousya.gCD,tecGyousya.yuubin,tecGyousya.juusyo,tecGyousya.gyousya,tecGyousya.tantou,tecGyousya.tel,tecGyousya.fax," & _
                    "tecTantou.tID,tecTantou.syozoku,tecTantou.namae," & _
                    "tecBumon.bCD,tecBumon.bumon1 "

実際はこんな感じで、請求書を作成する為に3つのテーブルからそれぞれのデータを表示しています。

編集 削除
稲兎  2004-04-09 11:59:55  No: 112768  IP: [192.*.*.*]

>このデータ件数を把握したいのですが、発行コードを選択して
>0001はレコード数3件
>0002はレコード数2件
>というように把握したいと思っています。

この部分は、フォーム上よりリストボックスにて行うので、別のSQLを作成しています。

編集 削除
特攻隊長まるるう  2004-04-09 12:04:39  No: 112769  IP: [192.*.*.*]

全部再現するのは面倒なんだけど…
>        strHyouji = "select tecMitsumori.iDay,hCD,mCD,maker,hinmei,katashiki,hosoku,Sum(suuryou) As suuryou,tani,isogi, " & _
        strHyouji = "select 

tecMitsumori.iDay,hCD,mCD,maker,hinmei,katashiki,hosoku,Sum(suuryou),count(suuryou) As suuryou,tani,isogi, " & _
ってしたらどうなります?

編集 削除
稲兎  2004-04-09 12:49:14  No: 112770  IP: [192.*.*.*]

特攻隊長まるるうさんからのご意見に従って実行したところ、答えは1と表示されてしまいます。

編集 削除
特攻隊長まるるう  2004-04-09 13:05:54  No: 112771  IP: [192.*.*.*]

いや、1であってるんだけどね。
最初の質問にあったテーブル

tCD Gyousya Hinmei, suuryou
0001  A社  苺 特級  1パック
0001  A社   苺 1級  1パック
0001  A社   苺 2級  1パック
0002  B社   苺 特級  1パック
0002  B社   苺 特級  1パック
0002  B社   桃       1パック

としたら
SELECT tCD, SUM(X)
FROM (
SELECT tCD, Gyousya, Hinmei, count(suuryou) AS [X], SUM(suuryou)
FROM Ctable
GROUP BY tCD, Gyousya, Hinmei
) AS DUMMY
GROUP BY tCD
ってことでしょ?

編集 削除
特攻隊長まるるう  2004-04-09 13:17:28  No: 112772  IP: [192.*.*.*]

ああ、ちょっと違った。
SELECT tCD, count(X)
FROM (
SELECT tCD, Gyousya, Hinmei, count(suuryou) AS [X], SUM(suuryou)
FROM Ctable
GROUP BY tCD, Gyousya, Hinmei
) AS DUMMY
GROUP BY tCD

どこの何を数えてるのか?足してるのかをもう一度考えてみてね?
サブクエリ(()で囲まれたSELECT文)の内容も確認してね?

編集 削除
稲兎  2004-04-09 13:54:06  No: 112773  IP: [192.*.*.*]

特攻隊長まるるうさんのご指摘を受けACCESSにて実行してみました。
結果は思った通りです。
サブクエリという存在を知りませんでした。
もっと勉強します!

特攻隊長まるるうさん・へいぽさんご意見ありがとうございました!

編集 削除