Access VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


3434 / 9994 ←次へ | 前へ→

【9821】Re:2テーブル共通のレコード検索について
回答  小僧  - 07/9/8(土) 17:50 -

引用なし
パスワード
   ▼ゆっぴぃ さん:
こんにちは。

>>ID と 品名 の2フィールドで Uniqueである(他のレコードと絶対に被らない)事を
>>テーブルに明示的に書いてあげないと更新ができません。

>とのことですが、これはフィールドの中に同じ値があってはいけないということ
>なのでしょうか?

ID の中で重複、品名の中で重複は許されますが、
IDと品名を合わせると重複は許されない、という事ですね。

ID 品名
1 りんご
2 りんご
2 なし
2 なし    ← これはダメ


例として、

テーブルA
ID  品名  価格
1 りんご  100
2 みかん   50
3 なし   150


テーブルB
ID  品名  価格
1  りんご null
3  ぶどう null
1  りんご null


SELECT テーブルB.ID, テーブルB.価格
FROM テーブルA
LEFT JOIN テーブルB
ON (テーブルA.ID = テーブルB.ID) AND (テーブルA.品名 = テーブルB.品名)
WHERE テーブルB.ID Is Not Null;

ID 価格
1  null
1  null


このような状態になると、価格フィールドを更新したくても
テーブルBのどちらのレコードなのかという区別がつかないため、
一意制約が必要となります。
(前回の回答ではテーブルAにもIndexをつけましたが、
正確にはテーブルBのみIndexをつければ更新は可能です。)


>重なるデータがある場合にはインデックスは使えない・・・のかな??

結合しているフィールド(上記例の場合はID、品名)に
重複がある場合は Index を使う方法はできませんね。


データの中身は適当で良いので
ゆっぴぃさんの使っているテーブルの情報をご提示して頂くと
もうちょっとピンポイントな回答ができるかもしれません。
940 hits

【9809】2テーブル共通のレコード検索について ゆっぴぃ 07/9/7(金) 13:20 質問[未読]
【9810】Re:2テーブル共通のレコード検索について 小僧 07/9/7(金) 14:27 回答[未読]
【9817】Re:2テーブル共通のレコード検索について ゆっぴぃ 07/9/7(金) 22:44 質問[未読]
【9818】Re:2テーブル共通のレコード検索について ゆっぴぃ 07/9/8(土) 11:22 質問[未読]
【9819】Re:2テーブル共通のレコード検索について 小僧 07/9/8(土) 11:52 回答[未読]
【9820】Re:2テーブル共通のレコード検索について ゆっぴぃ 07/9/8(土) 15:20 質問[未読]
【9821】Re:2テーブル共通のレコード検索について 小僧 07/9/8(土) 17:50 回答[未読]
【9822】Re:2テーブル共通のレコード検索について ゆっぴぃ 07/9/8(土) 22:56 質問[未読]
【9823】Re:2テーブル共通のレコード検索について 小僧 07/9/9(日) 7:02 回答[未読]
【9824】Re:2テーブル共通のレコード検索について ゆっぴぃ 07/9/9(日) 14:16 お礼[未読]
【9826】Re:2テーブル共通のレコード検索について hatena 07/9/10(月) 10:23 発言[未読]

3434 / 9994 ←次へ | 前へ→
ページ:  ┃  記事番号:
1078201
(SS)C-BOARD v3.8 is Free