DB名:db1
TABLE名:book
DB名:db2
TABLE名:author
以上のように、異なるデータベースに存在する2つのテーブルを結合させたいです。
結合条件は book.id = author.book_id とします。
この場合の結合方法を教えてください。
また、この場合のデータベースへの接続はどうすればいいのでしょうか。
同時に2つのデータベースに接続できるのでしょうか。
接続パス・ユーザーはdb1/db2で異なるとします。
みなさんよろしくお願いします。
異なるデータベース間のテーブル結合は、表名をデータベース名で修飾することで行なえます。
select * from db1.book as x, db2.author as y where x.id=y.book_id
接続パス・ユーザーはdb1/db2で異なるとします
異なるサーバ間のテーブル結合をしたいと言ってますか?
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スクリプト上で接続する場合を想定しています。質問文を見ると全くその事に触れられていませんね、すみません。
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となります。
回答ありがとうございます。
なるほど、意外に簡単に出来るのですね。
>異なるサーバ間のテーブル結合をしたいと言ってますか?
いえ、同じサーバにあるDBです。
それぞれのDBへ別々に接続するだけでいいのでしょうか?