人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

MySQL5:異なるデータベース間のテーブル結合


DB名:db1
TABLE名:book

DB名:db2
TABLE名:author


以上のように、異なるデータベースに存在する2つのテーブルを結合させたいです。
結合条件は book.id = author.book_id とします。
この場合の結合方法を教えてください。

また、この場合のデータベースへの接続はどうすればいいのでしょうか。
同時に2つのデータベースに接続できるのでしょうか。

接続パス・ユーザーはdb1/db2で異なるとします。

みなさんよろしくお願いします。

●質問者: tokyosmash
●カテゴリ:インターネット ウェブ制作
✍キーワード:.book book dB DB2 データベース
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● chuken_kenkou
●27ポイント

異なるデータベース間のテーブル結合は、表名をデータベース名で修飾することで行なえます。

select *
 from db1.book as x,
 db2.author as y
 where x.id=y.book_id

接続パス・ユーザーはdb1/db2で異なるとします

異なるサーバ間のテーブル結合をしたいと言ってますか?

◎質問者からの返答

回答ありがとうございます。

なるほど、意外に簡単に出来るのですね。

>異なるサーバ間のテーブル結合をしたいと言ってますか?

いえ、同じサーバにあるDBです。

それぞれのDBへ別々に接続するだけでいいのでしょうか?


2 ● kurukuru-neko
●27ポイント

1つのMYSQLサーバーにdb1/db2が定義

されている場合個別の接続は不要

db1/db2への参照を 回答#1のように指定すればよい。

db1/db2のユーザー・パスワードは関係なく

参照する権限があれば可能。

2つのMYSQLサーバーにそれぞれdb1/db2が

定義されている場合は、

現在の接続しているサーバを参照元として

参照先のサーバへの接続情報を定義する。

Create SERVER

http://dev.mysql.com/doc/refman/5.1/en/create-server.html

でDB接続を

FEDERATEDタイプで参照テーブルを定義する。

http://www.thinkit.co.jp/free/article/0608/1/5/

http://www.klab.org/media/mysql/index2.html

この場合も個別接続は不要

◎質問者からの返答

回答ありがとうございます。

>参照する権限があれば可能

との事ですが、PHP上でMySQLに接続する場合はどうなのでしょうか?コマンドライン等で接続するのではなくPHPスクリプト上で接続する場合を想定しています。質問文を見ると全くその事に触れられていませんね、すみません。


3 ● mitz
●26ポイント

http://dev.mysql.com/doc/refman/4.1/ja/join.html

SELECT
*
FROM db1.book as x
INNER JOIN db2.author as y ON x.id=y.book_id

等価結合ならINNER JOIN, 外部結合の場合はLEFT JOINやRIGHT JOINとなります。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ