プロが教えるわが家の防犯対策術!

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

A 回答 (8件)

抽出するのが[注文番号]だけなら、



select distinct [注文番号] from 元デ-タ;


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

この回答への補足

説明不足ですみません、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デ-タがダブら無い様に選択クエリ-で関数を使用できませんか?
 以上宜しくお願いします
          

補足日時:2010/06/18 12:02
    • good
    • 0
この回答へのお礼

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

お礼日時:2010/06/23 09:52

AとBのクエリ、その結果とC、クエリを分割して試して下さい。



通常、集計でうまくいくはずですが、AとBの関係では1行になっても、AとCの関係で複数行になってしまっている可能性あります。1行にさせた後のクエリでCとつなげる方が確実。

リンクの関係、Aだけあるもの出力か、AとC両方にあるもの出力か、Cだけあるもの出力か、集計とさせてもこれによって結果変わります。
    • good
    • 0
この回答へのお礼

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

お礼日時:2010/06/23 09:53

すみません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データ.名前;

張り間違えです。
    • good
    • 0
この回答へのお礼

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

お礼日時:2010/06/23 09:54

>キ-が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データ.名前;


ではどうですか?
    • good
    • 0

確認です。



Aデ-タ            Bデ-タ
注文番号  品名        注文番号  送付先
1111    みかん       1111    大阪
1111    りんご        

をクエリ実行すると

Aからの注文番号  品名        Bからの注文番号  送付先
1111        みかん       1111        大阪
1111        りんご       1111        大阪

となるので

Aからの注文番号  品名        Bからの注文番号  送付先
1111        みかん       1111        大阪
1111        りんご                 大阪

としたい、でしょうか。

この回答への補足

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

Aからの注文番号  品名        Bからの注文番号  送付先   Cからの注文番号
1111        みかん       1111        大阪    1111  山本

補足日時:2010/06/19 10:45
    • good
    • 0

抽出したいレコード件数はAテーブル分と同じく変えないで、注文番号は同じ番号だったら最初の1行めのみセット2行目以降は空白というのであれば対応策が変わってきます。



2件目にて、DLOOKUP関数で前レコードの値を取得し現在レコードと同じかの判断の上、空白にさせるか決める。こういうのがあります。
    • good
    • 0

添付図でいかがですか


選択クエリーウィザードでクエリーを作成し並び替え欄を右クリックして集計を設定すると
行が一つ増えます。ここを図のように設定します。

このシステムどのようなテーブル構成になっていますか
補足を見ましたが、自分なら次のような構成にします
1.TBL商品(商品ID,商品コード,商品名,…)
2.TBL送付先(送付先ID,送付先コード,送付先名,住所…):送付先コードは重複なし
3.TBL注文表紙(注文ID,注文No.,送付先ID,注文日,…)注文No.は重複なし
4.TBL注文明細(注文明細ID,注文ID,商品ID,…)
各テーブルの最初は主キー(オートNo.)として
TBL送付先-TBL注文表紙-TBL注文明細ーTBL商品とリレーションを設定します。
「クエリ-でデ-タを抽出したいのですが元デ」の回答画像3
    • good
    • 0

クエリのデザイン画面で、ツールバーに表示、そこに集計ってありませんか。



注文番号のように同じ内容でまとめるならグループ化。応用で、品名なら最小・最大の選択でみかんやりんごどっちを出力するかをコントロールできる仕組みです。よく使います。

説明不足でもなかったですが。
    • good
    • 0
この回答へのお礼

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

お礼日時:2010/06/18 16:16

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!