現在、このようなデータを用いています。
データの項目は発行コード・業者・品名・規格・数量です。
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にてグループ化してしまうとレコード件数は把握出来ないのでしょうか?
ご指導宜しくお願い致します。
> 0001 A社 苺 特級 1パック
> 0001 A社 苺 1級 1パック
> 0001 A社 苺 2級 1パック
> -----------------------------------
> 0002 B社 苺 特級 2パック
> 0002 B社 桃 1パック
こうなるってことは、
発行コード・業者・品名・規格でグループ化して
数量は SUM を使用しているのですか?
発行コードのみでグループ化した場合
発行コード
0001
0002
となってしまい、上のようにはなりませんよ。
現在はどのようなクエリを作成しているのですか?
説明不足にて申し訳ありません。
本来のクエリは複数のテーブルより作成しています。
数量はへいぽさんの書き込み通り、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つのテーブルからそれぞれのデータを表示しています。
>このデータ件数を把握したいのですが、発行コードを選択して
>0001はレコード数3件
>0002はレコード数2件
>というように把握したいと思っています。
この部分は、フォーム上よりリストボックスにて行うので、別のSQLを作成しています。
全部再現するのは面倒なんだけど…
> 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, " & _
ってしたらどうなります?
特攻隊長まるるうさんからのご意見に従って実行したところ、答えは1と表示されてしまいます。
編集 削除いや、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
ってことでしょ?
ああ、ちょっと違った。
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文)の内容も確認してね?
特攻隊長まるるうさんのご指摘を受けACCESSにて実行してみました。
結果は思った通りです。
サブクエリという存在を知りませんでした。
もっと勉強します!
特攻隊長まるるうさん・へいぽさんご意見ありがとうございました!