OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
解決
済み

伝票リスト中に商品名

  • 困ってます
  • 質問No.157281
  • 閲覧数67
  • ありがとう数1
  • 気になる数0
  • 回答数3
  • コメント数0

お礼率 64% (9/14)

いつもお世話になります。
過去ログを探してみたのですが探し方が悪かったのか見つかりませんでしたので、書き込みさせていただきました。

売上伝票のリスト中に商品名(明細一行目)を入れたいので
す。

テーブルとしましては、
[T_売上伝票]
伝票番号,顧客コード....
[T_売上伝票明細]
伝票番号,行番号,商品コード,商品名.....

このままクエリーをかけると、
001 000001 商品A ........
001 000002 商品B ........
002 000002 商品B ........
となりました。

希望は、
001 000001 商品A ........
002 000002 商品B ........
となる事です。

何かよい方法があれば教えてくださいませ。
よろしくお願い致します。
通報する
  • 回答数3
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

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

  • 回答No.3
レベル11

ベストアンサー率 34% (97/285)

>明細の行番号はオートナンバーになっていて
>伝票が新規で作成されたりすると増えちゃいます。
なるほど。
明細の行番号は、伝票ごとに振ってあるのでなく、全部の通し番号になっているのですね。

>一行目(一番少ない行番号と仮定して)を取るの...
まず、伝票番号ごとの一行目の行番号をとってくるクエリーを作成しましょう。

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

お礼率 64% (9/14)

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

その他の回答 (全2件)

  • 回答No.1
レベル11

ベストアンサー率 34% (97/285)

>希望は、 >001 000001 商品A ........ >002 000002 商品B ........  ↑  ↑  ↑どの列ですか? ...続きを読む
>希望は、
>001 000001 商品A ........
>002 000002 商品B ........
 ↑  ↑  ↑どの列ですか?
補足コメント
sphere

お礼率 64% (9/14)

早速のレスありがとうございます。
失礼しました。補足いたします。

伝票番号|商品コード|商品名
001| 000001|商品A
002| 000002|商品B

よろしくお願いいたします。
投稿日時 - 2001-10-25 16:08:08


  • 回答No.2
レベル11

ベストアンサー率 34% (97/285)

>伝票番号|商品コード|商品名 >001| 000001|商品A >002| 000002|商品B T_売上伝票とT_売上伝票明細は1:多の関係にありますよね。 伝票番号001はに対応する行番号は複数のものがあるので、伝票番号ひとつを一行にすると言うことは、明細のどの行を持ってくるのか指定しなければなりません。 たとえば一行目を持ってくるのであればこうなります。 ...続きを読む
>伝票番号|商品コード|商品名
>001| 000001|商品A
>002| 000002|商品B

T_売上伝票とT_売上伝票明細は1:多の関係にありますよね。
伝票番号001はに対応する行番号は複数のものがあるので、伝票番号ひとつを一行にすると言うことは、明細のどの行を持ってくるのか指定しなければなりません。

たとえば一行目を持ってくるのであればこうなります。

select 伝票番号,商品コード,商品名
form [T_売上伝票明細]
where 行番号=1

(ご質問のケースだと連結する必要が無いので省略しました)
補足コメント
sphere

お礼率 64% (9/14)

早速のご回答有り難うございます^^
全然きちんと書いておりませんでした。
明細の行番号はオートナンバーになっていて
伝票が新規で作成されたりすると増えちゃいます。
ですので、書込みしていただいた、
Where句の式が使えません。
一行目(一番少ない行番号と仮定して)を取るのに、
"=DMin([行番号])"を使ってみようとしたのですが、
式がうまくクエリの条件に入ってくれません。
VBAでなら使えるんでしょうね。。DCount使えてるし。
困りました。。。
投稿日時 - 2001-10-26 01:07:20
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
このQ&Aにこう思った!同じようなことあった!感想や体験を書こう
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ