- ベストアンサー
テーブルの結合について
うまく動作しなくて、困っております。 MySQLを利用しており、その際のテーブルの結合で困っています。 table a +-+--+ |id|col| +-+--+ | 1|A| | 2|B| | 3|C| | 4|D| | 5|E| +-+--+ table b +-+--+ |id|col| +-+--+ | 2|G| | 5|G| | 6|G| +-+--+ 上記テーブルを結合し、下記のようにしたいのですが・・・。 +-+--+ |id|col| +-+--+ | 1|A| | 2|B| | 3|C| | 4|D| | 5|E| | 6|G| +-+--+ 参考書・Webから探してみましたが、 見つかりませんでした。 よろしくお願い致します。
- moozoo
- お礼率100% (2/2)
- その他(データベース)
- 回答数2
- ありがとう数2
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
select * from a union select * from table b where not exists(select * from a where a.id = b.id )
その他の回答 (1)
- R34_666
- ベストアンサー率25% (17/66)
もう少し説明ください。 AとBを結合してCというテーブルを作るのか、 BのデータをAに入れてしまうのか、 結合して表示だけするのか。 テーブルを作成したり実データを結合するのでしたら 一度、元にしたい方を外部テキストにはき出して、 LOAD DATA INFILE '外部テキスト' REPLACE INTO TABLE `結合テーブル` と言う感じでやるとKEYが重複した場合上書きしてくれます。
お礼
R34_666さんのものが参考となり、とりあえず解決しました。有難う御座いました。 各メーリングリスト、掲示板にて同じ質問されている方もいたので、 載せておきます。 結合用テーブルを作成しておきます。 # delete from c; 必要に応じて初期化 replace into c(id,col) select id,col from a; replace into c(id,col) select id,col from b; これで、目的のテーブルが作成出来ます。 状況によって、insert の方が良い時もあります。
補足
早速のご回答有難う御座います。感謝しております。 結合して表示だけです。といいますか、 Where句にて、いろいろと抽出したいと思います。 R34_666さんに教えて頂いたものを試してみます。 作業頻度が高いので、やはりクエリー1発で表示 出来ればよいのですが。
関連するQ&A
- テーブルを結合
テーブルの結合に関して質問します。 ネットなどでinner joinを使った複数のテーブル結合が参考として 書いてあったのですが(3つまで), 4つテーブルを結合する事は 出来るのでしょうか? A,B,CテーブルにはID,NAMEがあります。 DテーブルにはA,B,CテーブルのIDがあります。 参考サイトを見て3つのテーブルを結合するSQLが以下になります。 SELECT a.name, b.name, c.name FROM a INNER JOIN (b INNER JOIN c ON b.id = c.id) ON a.id = c.id よろしければアドバイスお願いします。
- ベストアンサー
- Oracle
- 2つのテーブル結合
Oracle10g使用しています。 テーブルAとテーブルBを結合させてデータを取得したいと思っています。 [テーブルA] ID name 1 A 2 B 3 C 4 D [テーブルB] ID SEQ VALUE 1 1 111 2 1 222 2 2 333 3 1 444 4 1 555 4 2 666 4 3 777 テーブルAのキーは[ID]、テーブルBのキーは[ID,SEQ]です。 この二つを連結して以下のように出力したいと思っています。 ID SEQ NAME VALUE 1 1 A 111 2 2 B 333 3 1 C 444 4 3 D 777 テーブルBのデータは同じIDのうち最大のSEQのものを取得したいのですが よいSQLが思いつきません。 よい方法があればご教授ください。 よろしくお願いいたします。
- ベストアンサー
- Oracle
- 2つのテーブルを結合する際にIDを割り当てたい
PHPでmySQLを作成しています。 現在学習中なのですが、自己解決できない問題が発生したのでどうかお知恵をお貸しください。 --- 同じデータベースにTableAとTableBがあります。 中身は下記のようだとします。 TableA | TableB id name time | name time : : : | C1 D2 101 A1 B1 | C2 D2 102 A2 B2 | : : 103 A3 B3 | C20 C20 --- テーブルAのカラムid、name、timeの3カラム、テーブルBはname、timeの2カラムです。 これを --- TableA TableB id name time name time : : : 101 A1 B1 102 A2 B2 103 A3 B3 104 C1 D1 105 C2 D2 : : : 123 C20 D20 --- とするような方法を教えてください。(TableBはレコードなし) テーブルの結合ではIDが割り当てられず、上手な方法が思いつきません。 どうかご教示のほど、よろしくお願い致します。
- ベストアンサー
- MySQL
- ACCESSでの結合プロパティについて
ACCESSでの結合プロパティは、3つあって、1つ目は2つのテーブルに共通するものだけを引っ張ってくる。 2つ目は片方の全部と、もう1方では、共通するものだけ。3つ目は、2つ目の逆。 両方のレコードを持ってくるということは出来ないのでしょうか? 例:「data」で結合して、表示は、今回厳密には定義しません。 テーブル1 ID data 1 a 2 b 3 c 4 d 5 e 6 f テーブルB ID data 4 d 5 e 6 f 7 g 8 h 9 I 10 j 結合プロパティ(1)では、 ID data 4 d 5 e 6 f 結合プロパティ(2)では、 ID data 1 a 2 b 3 c 4 d 5 e 6 f 結合プロパティ(3)では、 ID data 4 d 5 e 6 f 7 g 8 h 9 I 10 j となると思います。 今やりたいことは、全部持ってくることです。 ID data 1 a 2 b 3 c 4 d 5 e 6 f 7 g 8 h 9 I 10 j よろしくお願い致します。
- ベストアンサー
- オフィス系ソフト
- テーブルの結合について
お世話になります。 ACCESSで、以下のテーブル(1)をベースにテーブル(2)をUNIONさせ、テーブル(3)の様に作成したいです。 どのような方法で実現できるのでしょうか? テーブル(1) id ,pass,biko 001,1234, a 002, 0, 0 003, 0, 0 004, 0, 0 005, 0, 0 テーブル(2) id ,pass,biko 002,2345, b 003,3456, c 004,4567, d 005,5678, e テーブル(3) id ,pass,biko 001,1234, a 002,2345, b 003,3456, c 004,4567, d 005,5678, e また、テーブル(3)をSQL Serverにも同一のものをコピーしたいのですが どの様にすればいいでしょうか? ODBC接続は出来ております。 お手数ではありますが、ご回答をお待ちしております。
- 締切済み
- その他(データベース)
- アクセスで複数のテーブルを結合したい
アクセスで,2つのテーブルを一つに結合するにはどうしたらいいでしょうか。 ちなみに,2つのテーブルはこんな感じです。 テーブル1 テーブル2 A B C D E A S B F C D 1 3 4 8 9 5 8 8 9 7 8
- ベストアンサー
- その他(インターネット・Webサービス)
- テーブルの差分をとる結合
TableAとTableBがあります。構造は同じです。 中身は下記のようだとします。 TableA TableB ID VALUE ID VALUE 1 A 3 C 2 B 4 D 3 C 差分結合結果を下記のようにとりたいのです。 1 A 2 B 4 D 良い方法をご存じでしたら、ご教授よろしくお願い致します。
- ベストアンサー
- SQL Server
- MySQL5でキーがないテーブルの結合はできますか?
MySQL5なのでサブクエリが使えるのですが、 A x Bのレコードを返したいのですがSQLで可能でしょうか? ■テーブルA a_id b_id 1 1 1 2 ■テーブルB c_id 1 2 ■期待する結果 a_id b_id c_id 1 1 1 1 2 2
- ベストアンサー
- MySQL
- テーブル結合について
テーブルの結合についてお聞きしたいことがあります。 カラム「KEY」を結合条件に テーブルA、B、Cを結合して【取りたい結果】のようなデータを取りたいと思っています。 しかし、テーブルAにBとCをLEFT JOINを結合した所、 【取得された結果】のデータが取得されました。 どのような結合をしたら期待通りの結果が得られるのでしょうか? 回答宜しくお願いします。 【取得された結果】 key dataA dataB dataC ------------------------------------------------- 1 A-1 B-1 C-1 A-1 B-1 C-2 A-1 B-1 C-3 2 A-2 3 A-3 【取りたい結果】 key dataA dataB dataC ------------------------------------------------- 1 A-1 B-1 C-1 A-1 C-2 A-1 C-3 2 A-2 3 A-3 【テーブルA】 key dataA --------------------- 1 A-1 2 A-2 3 A-3 【テーブルB】 key dataB --------------------- 1 B-1 【テーブルC】 key dataC --------------------- 1 C-1 1 C-2 1 C-3
- 締切済み
- Oracle
お礼
最新のバージョンでは、UNIONがサポート されているようですね。 私が利用しているバージョンでは、UNIONが使えません。 折をみて、バージョンアップしようと思います。 有難う御座いました。