
色々とネットで調べてみたのですが、ピンとこないので質問させていただいています。
以下のようなテーブルを想定しています。
「テーブルA」
ユニークキー データ1 データ2 ・・・
0001 ...
0002 ...
0003 ...
「テーブルB」
キー データA データB ・・・
0001 ...
0001 ...
0002 ...
テーブルAではユニークキーは重複していないのですが、テーブルBのキーは重複しています。
このような状況で、テーブルBの”キー”とテーブルAの”ユニークキー”を照合させて、テーブルBに”データ1 データ2 ・・・”を流し込みたいと思っています。
現状では、複数の検索結果が出るためにエラーとなっています。「一対多」結合を利用するというところまではわかったのですが、そこから先がよくわかりません。
どなたか解説していただけないでしょうか。
初心者の質問で恐縮ですが、お教え頂ければ嬉しいです。
No.2ベストアンサー
- 回答日時:
テーブルAはユニークキーですので、テーブルBのキーが重複していたとしても、それぞれのデータに対応するテーブルAのデータは一意に決まります。
こういうケースは1対多であっても、問題なく内部結合による更新を掛けることができます。Accessの場合の書式は以下の通りです。
(aとかbとかは別名で、毎回「テーブルA」「テーブルB」と書くのを省略するために使うものです)
UPDATE テーブルB AS b INNER JOIN テーブルA AS a ON a.キー=b.キー SET b.データ1 = a.データ1, b.データ2 = a.データ2;
jamshid6さん、ご回答ありがとうございました。
一方のデータが一意に定まっていれば、他方に重複があっても内部結合できるということですね。
結合の部分はややこしくて理解し難いので、徐々に慣れていきたいと思います。
大変助かりました。初歩的な質問にもご丁寧にご回答いただき、ありがとうございました!
No.4
- 回答日時:
>一対多については、”「一対多」のリレーションシップを「結合」して、
>データを処理していく”との理解でよろしいでしょうか。
リレーションシップはテーブルの関係を規定するもの
結合は2つのレコードセット(テーブルまたはクエリ)をどう結びつけるかを規定するものです
リレーションシップとは全く関係ありません
>その理由は余計なメモリを使ってしまうからでしょうか。
これは理由の中でも重要度の低いものです
一番重要な理由はデータの整合性を保つという点ですね
詳しくは本やヘルプで正規化について調べてください
これを理解しないといいデータベースは作れませんよ
CHRONOS_0さん、度々のご回答ありがとうございます。
わかりやすいく解説して頂いて、リレーションシップと結合の関係について理解できました。
いまはデータベースを使うのに精一杯ですが、次はデータベースの設計についても学んでいきたいと思います。
質問以外の文中の誤解までご指摘頂いて、ありがとうございます。自分で気づかないところを教えて頂けたので、大変勉強になりました。ありがとうございました。
No.3
- 回答日時:
結合には内部結合と外部結合しかありません
1対多はリレーションシップです
全く異なるものであることを理解した方がいいですね
>テーブルBに”データ1 データ2 ・・・”を流し込みたいと思っています。
こういうものはテーブルAとBを内部結合(Inner join)するSQLでできます
それと、
テーブルAのようなテーブルがあり、テーブルBがそれを参照している関係なら
テーブルBにはテーブルAの主キーだけを参照キーとして取り込みます
他のデータ1や2は取り込んではいけません
この回答への補足
CHRONOS_0さん、ご回答ありがとうございます。
一対多については、”「一対多」のリレーションシップを「結合」して、データを処理していく”との理解でよろしいでしょうか。
二点目の「データ1や2は取り込んではいけない」とのご指摘ですが、その理由は余計なメモリを使ってしまうからでしょうか。
よろしくお願いいたします。
No.1
- 回答日時:
やりたいことは「テーブルAの内容で、テーブルBを更新する」
つまり「テーブルBにもデータ1、データ2などのフィールドがあって、そこにキーが一致するテーブルAのデータ1、データ2の内容をセットしていきたい」ということであっていますか?
もし上の理解があっているならば、この場合の更新処理はDBMSによって書き方が随分違いますので、何のデータベースを使っているのかわからないとコメントしづらいです。
あえて「その他(データベース)」に書かれているところから、Accessかなとは思ったのですが、もしかしたらMySQLやOracleかもしれないので。。。
この回答への補足
早速のご回答ありがとうございます。
「テーブルBにもデータ1、データ2などのフィールドがあって、そこにキーが一致するテーブルAのデータ1、データ2の内容をセットしていきたい」の通りで間違いありません。
テーブルBにあるキーの重複をどのように回避すればいいのか、が現在の障害です。
また、データベースはご指摘の通りAccessです。今回はアプリケーションの機能ではなく、SQL文で処理していかなければならない状況です。
お手数おかけしますが、よろしくお願いいたします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Oracle sqlのupdate文で質問です。 テーブルBの番号をキーにテーブルAの身長をテーブルBの身長に更新 2 2022/11/02 15:15
- Oracle SQLについて教えて下さい。 主キーを持ったカラムを主キーの機能を持たせたまま カンマ区切りで文字列 1 2023/03/27 22:47
- Excel(エクセル) Excel同士のデータの突合 3 2023/08/07 16:34
- Oracle sqlで質問です。 Aテーブルの登録番号をキーにBテーブルから確認番号を取得したいのですが、Bテーブ 4 2023/05/18 13:08
- Ruby pandasでsqlite3にテーブル作成・追加・読み出しでindexの取り扱い方教えてください 5 2023/03/08 09:57
- その他(データベース) IT用語について質問です。 以前ITパスポートの試験を受けた際にデータベースが何の集まりかについての 2 2022/12/10 12:29
- その他(データベース) 更新クエリをリンクデータベーステーブルに実行し実行時エラー3362固有インデックスに重複する値が含ま 1 2022/09/21 11:44
- Oracle sqlで質問です。 Aテーブルの情報をBテーブルに更新かけたいです。 やりたいことは、Bテーブルの受 1 2023/05/17 11:17
- Oracle 質問です。 下記のテーブルとデータがあり、 取得想定結果のように出力したいです。 下記のsqlだと0 2 2023/05/23 19:10
- Excel(エクセル) CSVファイルがカンマ区切りにならない。対処法を教えていただきたいです。 仕事でSMS一斉送信ができ 2 2022/07/01 21:24
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
データベースの設計について
-
ビューのソートについて
-
SQLのビューとカーソルの違い
-
Accessでデータシートに同じデ...
-
MySQLの構造について
-
このISAMでは、リンクテーブル・・
-
重複なしのフィールドにつき、...
-
SQL文の書き方について
-
初心者です。 お願いします。
-
mysqlのデータの上限ってありま...
-
「順位データ」の持ち方につい...
-
PHP+MySQLによる会員システム
-
時間の比較についてアドバイス...
-
access 特定のレコード数までエ...
-
ACCESS2000でのリンクテーブル...
-
SQL server 2008 management st...
-
IF NOT EXISTを使用するINSERT文
-
MySQLの容量の削減の仕方
-
2つのテーブルからレコードを...
-
htmlコードで書かれた表にphpで...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Accessでデータシートに同じデ...
-
Oracleで上書きImportはできま...
-
このISAMでは、リンクテーブル・・
-
テーブルで一番古いレコードだ...
-
ビューのソートについて
-
アクセス レコードセットを更...
-
Accessのテーブルデータを一気...
-
accessでレコード更新直後の反...
-
マテリアライズドビューとスナ...
-
結合テーブルでINSERTする方法...
-
ユニオンクエリで複数ファイル...
-
ORA-01401が表示され、データが...
-
ERROR1062:Duplicate entry.......
-
住所のDBテーブル、マスターの...
-
Accessでの稼働日数計算の方法
-
ACCESSで容量が50MBになった...
-
VBAでSQLServerへのODBC接続
-
ODBC接続で新しいレコードを追...
-
処理の途中で停止させ、再開さ...
-
「クリップボードにコピーされ...
おすすめ情報