• ベストアンサー

クエリ-でデ-タを抽出したいのですが元デ-タに注文番号が重複している行

クエリ-でデ-タを抽出したいのですが元デ-タに注文番号が重複している行 が沢山あるので、重複している注文番号は1行だけ 抽出するには クエリ-の注文番号 の抽出条件にどのような 関数を使用すれば良いのですか?(ダブリ分は1行のみ抽出) 指導願います アクセス2003

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

  • ベストアンサー
  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.1

抽出するのが[注文番号]だけなら、 select distinct [注文番号] from 元デ-タ; 抽出するのが[注文番号]のほかにもあるなら、抽出・選択する列名も例示の上で ダブりを取り除く条件を補足してください。

ryo0511
質問者

お礼

色々試してみましたが  select distinct [注文番号] from 元デ-タ  このSQLクエリと B、c、D各デ-タにリレ-ションで 結び 完成しました ありがとうございました 又宜しくお願いします。

ryo0511
質問者

補足

説明不足ですみません、SQLで組むのですか? 今選択クエリで作成しています キ-がAデ-タの注文番号、B、C、Dと4個の各デ-タを他のサ-バへリンクを張っています、Aデ-タに同じ注文番号が存在するので、Bデ-タもAデ-タと同じ数だけ 抽出しますね、それをAデ-タの重複している注文番号(複数あり)を 1個にして抽出したいのです、 抽出デ-タの列は20個あります Aデ-タ            Bデ-タ 注文番号  品名        注文番号  送付先 1111    みかん       1111    大阪 1111    りんご          .  . 9999    うり        9999    東京 9999    きゆうり          9999    なすび 上のデ-タとします、Aデ-タの注文番号でリンクを張ります、実行したら Aデ-タ1111に Bデ-タの1111が みかんとりんごにデ-タが同じ行に来ますね、それを 重複している 1111から9999の注文番号のデ-タを1つだけ抽出したいのです Bデ-タがダブら無い様に選択クエリ-で関数を使用できませんか?  以上宜しくお願いします           

その他の回答 (7)

  • layy
  • ベストアンサー率23% (292/1222)
回答No.8

AとBのクエリ、その結果とC、クエリを分割して試して下さい。 通常、集計でうまくいくはずですが、AとBの関係では1行になっても、AとCの関係で複数行になってしまっている可能性あります。1行にさせた後のクエリでCとつなげる方が確実。 リンクの関係、Aだけあるもの出力か、AとC両方にあるもの出力か、Cだけあるもの出力か、集計とさせてもこれによって結果変わります。

ryo0511
質問者

お礼

色々試してみましたが  select distinct [注文番号] from 元デ-タ  このSQLクエリと B、c、D各デ-タにリレ-ションで 結び 完成しました ありがとうございました 又宜しくお願いします。

  • piroin654
  • ベストアンサー率75% (692/917)
回答No.7

すみませんSQLを以下にしてください。 SELECT Aデータ.注文番号, Bデータ.送付先, Max(Aデータ.品名) AS 品名の最大, Cデータ.名前 FROM (Bデータ INNER JOIN Aデータ ON Bデータ.注文番号 = Aデータ.注文番号) INNER JOIN Cデータ ON Bデータ.注文番号 = Cデータ.注文番号 GROUP BY Aデータ.注文番号, Bデータ.送付先, Cデータ.名前; 張り間違えです。

ryo0511
質問者

お礼

色々試してみましたが  select distinct [注文番号] from 元デ-タ  このSQLクエリと B、c、D各デ-タにリレ-ションで 結び 完成しました ありがとうございました 又宜しくお願いします。

  • piroin654
  • ベストアンサー率75% (692/917)
回答No.6

>キ-がAデ-タの注文番号、B、C、Dと4個の各デ-タを他のサ-バへリンクを張っています Dのデータがどのようなものかわからないので Dのデータについては無視します。 >Aの注文番号に対してリレ-ショプで B、C各デ-タから引っ張るようにしている テーブルのリレーションのことですか? 一応、案のクエリの作成ではこれを無視します。 >クエリ実行後 最終的に みかんでもりんごでも良いんです これを参考に ※案の一つです。 Cデータのフィールド名を名前とします。 Bデータ、Cデータは注文番号に対して レコードは一つとします。 SELECT Aデータ.注文番号, Bデータ.送付先, Max(Aデータ.品名) AS 品名の最小, Cデータ.名前 AS 名前の最大 FROM (Bデータ INNER JOIN Aデータ ON Bデータ.注文番号 = Aデータ.注文番号) INNER JOIN Cデータ ON Bデータ.注文番号 = Cデータ.注文番号 GROUP BY Aデータ.注文番号, Bデータ.送付先, Cデータ.名前; ではどうですか?

  • layy
  • ベストアンサー率23% (292/1222)
回答No.5

確認です。 Aデ-タ            Bデ-タ 注文番号  品名        注文番号  送付先 1111    みかん       1111    大阪 1111    りんご         をクエリ実行すると Aからの注文番号  品名        Bからの注文番号  送付先 1111        みかん       1111        大阪 1111        りんご       1111        大阪 となるので Aからの注文番号  品名        Bからの注文番号  送付先 1111        みかん       1111        大阪 1111        りんご                 大阪 としたい、でしょうか。

ryo0511
質問者

補足

済みません  クエリ実行後 最終的に みかんでもりんごでも良いんです Aの注文番号が複数では無く 1つにしたいのです。Aの注文番号に対してリレ-ショプで B、C各デ-タから引っ張るようにしているので、だから Aのデ-タに複数の同じ注文番号が有ると B、cのデ-タが全てAのデ-タにリンクするので 実行した後の デ-タが使いにくいのです、宜しくご指導願います Aからの注文番号  品名        Bからの注文番号  送付先   Cからの注文番号 1111        みかん       1111        大阪    1111  山本

  • layy
  • ベストアンサー率23% (292/1222)
回答No.4

抽出したいレコード件数はAテーブル分と同じく変えないで、注文番号は同じ番号だったら最初の1行めのみセット2行目以降は空白というのであれば対応策が変わってきます。 2件目にて、DLOOKUP関数で前レコードの値を取得し現在レコードと同じかの判断の上、空白にさせるか決める。こういうのがあります。

  • shinkami
  • ベストアンサー率43% (179/411)
回答No.3

添付図でいかがですか 選択クエリーウィザードでクエリーを作成し並び替え欄を右クリックして集計を設定すると 行が一つ増えます。ここを図のように設定します。 このシステムどのようなテーブル構成になっていますか 補足を見ましたが、自分なら次のような構成にします 1.TBL商品(商品ID,商品コード,商品名,…) 2.TBL送付先(送付先ID,送付先コード,送付先名,住所…):送付先コードは重複なし 3.TBL注文表紙(注文ID,注文No.,送付先ID,注文日,…)注文No.は重複なし 4.TBL注文明細(注文明細ID,注文ID,商品ID,…) 各テーブルの最初は主キー(オートNo.)として TBL送付先-TBL注文表紙-TBL注文明細ーTBL商品とリレーションを設定します。

  • layy
  • ベストアンサー率23% (292/1222)
回答No.2

クエリのデザイン画面で、ツールバーに表示、そこに集計ってありませんか。 注文番号のように同じ内容でまとめるならグループ化。応用で、品名なら最小・最大の選択でみかんやりんごどっちを出力するかをコントロールできる仕組みです。よく使います。 説明不足でもなかったですが。

ryo0511
質問者

お礼

ありがとう御座います。どうも説明不足で......何か違うみたいです、最初のSQLで 考えて見ます