• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:伝票リスト中に商品名)

伝票リスト中に商品名を入れたい方法は?

このQ&Aのポイント
  • 売上伝票のリスト中に商品名を入れたい方法についてお知りですか?
  • 過去ログを探しても見つからなかったので、こちらで質問させていただきます。
  • 現在のクエリーでは伝票リストに重複する商品名が表示されてしまいますが、一意の商品名が表示されるような方法を知りたいです。

質問者が選んだベストアンサー

  • ベストアンサー
  • stork
  • ベストアンサー率34% (97/285)
回答No.3

>明細の行番号はオートナンバーになっていて >伝票が新規で作成されたりすると増えちゃいます。 なるほど。 明細の行番号は、伝票ごとに振ってあるのでなく、全部の通し番号になっているのですね。 >一行目(一番少ない行番号と仮定して)を取るの... まず、伝票番号ごとの一行目の行番号をとってくるクエリーを作成しましょう。 SELECT 伝票番号, min(行番号) AS minRowNum FROM T_売上伝票明細 GROUP BY 伝票番号 ですね。 ここまで、出来ればあとはこれをネストしてその他のデータを結合しましょう。 結果はこうなりますね。 SELECT T_売上伝票.*, T_売上伝票明細.* FROM (T_売上伝票 INNER JOIN T_売上伝票明細 ON T_売上伝票.伝票番号 = T_売上伝票明細.伝票番号) inner join (SELECT 伝票番号, min(行番号) AS minRowNum FROM T_売上伝票明細 GROUP BY 伝票番号) as Nest on (T_売上伝票明細.伝票番号=Nest.伝票番号) and (T_売上伝票明細.行番号=Nest.minRowNum) 一つのクエリにすると複雑そうに見えますが、面倒くさいだけで複雑ではありません。

sphere
質問者

お礼

ありがとうございました。 クエリー上ではうまくいかなかったのですが、VBAでクエリーを走らせてテンポラリのテーブルに書き出してやると、 一行目だけとれた一覧が出来ました。これはただ単に私のやり方が悪かったのでしょう。 大変に参考になりました。これからも宜しくお願い致します。

その他の回答 (2)

  • stork
  • ベストアンサー率34% (97/285)
回答No.2

>伝票番号|商品コード|商品名 >001| 000001|商品A >002| 000002|商品B T_売上伝票とT_売上伝票明細は1:多の関係にありますよね。 伝票番号001はに対応する行番号は複数のものがあるので、伝票番号ひとつを一行にすると言うことは、明細のどの行を持ってくるのか指定しなければなりません。 たとえば一行目を持ってくるのであればこうなります。 select 伝票番号,商品コード,商品名 form [T_売上伝票明細] where 行番号=1 (ご質問のケースだと連結する必要が無いので省略しました)

sphere
質問者

補足

早速のご回答有り難うございます^^ 全然きちんと書いておりませんでした。 明細の行番号はオートナンバーになっていて 伝票が新規で作成されたりすると増えちゃいます。 ですので、書込みしていただいた、 Where句の式が使えません。 一行目(一番少ない行番号と仮定して)を取るのに、 "=DMin([行番号])"を使ってみようとしたのですが、 式がうまくクエリの条件に入ってくれません。 VBAでなら使えるんでしょうね。。DCount使えてるし。 困りました。。。

  • stork
  • ベストアンサー率34% (97/285)
回答No.1

>希望は、 >001 000001 商品A ........ >002 000002 商品B ........  ↑  ↑  ↑どの列ですか?

sphere
質問者

補足

早速のレスありがとうございます。 失礼しました。補足いたします。 伝票番号|商品コード|商品名 001| 000001|商品A 002| 000002|商品B よろしくお願いいたします。

関連するQ&A