電子書籍の厳選無料作品が豊富!

accessで以下の様なデータがあります


受注番号|商品名|個数|単価|送料|手数料|
1111 |みかん|3 |200 |500 |0 |
2222 |りんご|2 |250 |500 |250 |
2222 |いちご|4 |200 |500 |250 |
2222 |メロン|1 |1000|500 |250 |
3333 |ぶどう|2 |800 |500 |0 |
4444 |いちご|2 |200 |500 |250 |
4444 |メロン|1 |1000|500 |250 |


2222や4444の様に受注番号が同じ場合

2222 |りんご|2 |250 |500 |250 |
2222 |いちご|4 |200 |0 |0 |
2222 |メロン|1 |1000|0 |0 |

4444 |いちご|2 |200 |500 |250 |
4444 |メロン|1 |1000|0 |0 |

と、先頭にだけ送料・手数料を残して残りを【0】もしくは
削除する方法はありますか?

手作業では件数が多い為、クエリなど使って自動的に
する方法があれば教えてください。

どうぞよろしくお願い致します。

A 回答 (3件)

テーブルを更新するには単純条件か、複合条件なら1:nのn側になる


場合だけ可能です。掲題ではプライマリキー項目が無いため、Accessに
この関係を通知することが出来ませんので、更新不可能です。
DB上は0ではないが、表示上0にするには以下のクエリで可能です。
SELECT A.受注番号,A.商品名,A.個数,A.単価,
IIf(A.商品名=B.商品名,A.送料,0) AS 送料,
IIf(A.商品名=B.商品名,A.手数料,0) AS 手数料
FROM 受注表 AS A INNER JOIN
(SELECT 受注番号,FIRST(商品名) AS 商品名 FROM 受注表
GROUP BY 受注番号) AS B ON A.受注番号=B.受注番号
ORDER BY IIf(A.商品名=B.商品名,0,1)
    • good
    • 0
この回答へのお礼

大変参考になりました。こちらの方法で無事解決致しました。
ありがとうございました。

お礼日時:2008/10/07 00:39

>先頭にだけ送料・手数料を残して残りを【0】もしくは


>削除する方法はありますか?
こんなことをしてはだめです
フィールドには同じ意味のデータのみを格納するようにしないと
使えるテーブルになりませんよ

単価・送料は受注ごとに決まり、一つの受注に複数の商品が含まれるのなら

[受注](受注番号、日付、顧客No、送料、手数料)
[受注詳細](受注番号、商品名、単価、個数)

のような親子関係の2つのテーブルにします

データベースの基本はテーブルです
テーブルの作り方についてお手元の本を読み直してください
    • good
    • 0
この回答へのお礼

今回はDBソフトからCSVを落とした結果を編集する作業でした。
質問の仕方が少し悪かった様です。すみませんでした。
でも参考になりました。ありがとうございました。

お礼日時:2008/10/07 00:45

クエリをここでお見せできないので、要領を得ない話になってしまうかもしれませんが、こんな手順でやったらどうでしょう。



1) 受注番号-グループ化、商品名-先頭のレコード、という2列のクエリーを作って、この結果をテーブルとして保存します。別にテーブルにしなくてもいいのですが、テーブルにしておいたほうが、後の作業が早いのではないかと思います。

2) このテーブルと元のテーブルで不一致クエリをつくり(確かウィザードがあったはずですが)、

3) これを更新クエリに変えて、送料-0、手数料-0とします。

いきなり本番しないでくださいね。

蛇足ですが、こういう場合、多分、普通は送料、手数料のテーブルを別に作るのです。
あるいは、受注番号が主キーになっている、「受注マスター」のようなテーブルはありませんか?送料、手数料のフィールドはそちらにあるべきでは?
    • good
    • 0
この回答へのお礼

この方法も試しました。途中まで思う様な結果になりとても参考になりました。ありがとうございました。

お礼日時:2008/10/07 00:46

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