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

解決


稲兎  2004-04-09 20:19:35  No: 112765

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

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 20:40:19  No: 112766

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

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

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

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

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


稲兎  2004-04-09 20:46:13  No: 112767

説明不足にて申し訳ありません。
本来のクエリは複数のテーブルより作成しています。
数量はへいぽさんの書き込み通り、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 20:59:55  No: 112768

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

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


特攻隊長まるるう  2004-04-09 21:04:39  No: 112769

全部再現するのは面倒なんだけど…
>        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 21:49:14  No: 112770

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


特攻隊長まるるう  2004-04-09 22:05:54  No: 112771

いや、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 22:17:28  No: 112772

ああ、ちょっと違った。
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 22:54:06  No: 112773

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

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


※返信する前に利用規約をご確認ください。




  


  このエントリーをはてなブックマークに追加