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



DB名:db1
TABLE名:book

DB名:db2
TABLE名:author


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

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

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

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

回答の条件
  • 1人3回まで
  • 登録:2007/05/10 16:14:15
  • 終了:2007/05/17 16:15:03

回答(3件)

id:chuken_kenkou No.1

chuken_kenkou回答回数722ベストアンサー獲得回数542007/05/10 16:39:38

ポイント27pt

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

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

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

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

id:tokyosmash

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

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

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

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

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

2007/05/10 17:11:38
id:kurukuru-neko No.2

kurukuru-neko回答回数1844ベストアンサー獲得回数1552007/05/11 00:24:38

ポイント27pt

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

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

id:tokyosmash

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

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

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

2007/05/14 08:47:11
id:Kiske No.3

mitz回答回数39ベストアンサー獲得回数22007/05/11 11:32:15

ポイント26pt

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となります。

コメントはまだありません

この質問への反応(ブックマークコメント)

トラックバック

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません