

PDOクラスを利用した同一サーバー内にある異なるデータベースのテーブル結合の方法が分からず、、、お知恵を授けていただけますと嬉しいです。  
開発言語はPHP、データベースはMYSQLです。

やりたきことは以下2つのテーブルのidをキーとして内部結合させ、member_nameとgroup_nameカラムを抽出したいです。

データベース名 / テーブル名  
DB1 / table1  
DB2 / table2

ここ↓↓の記述方法が間違っているとは思うのですが、正しい記述が分かりません。  
`$stmt=$dbh1-> prepare($sql);`

プログラミング初心者のため、不足している情報などありましたら申し訳ございません。  
よろしくお願いいたします。

[code]

    $dsn1 = 'mysql:dbname=DB1;host=localhost;charset=utf8';
    $user1 = 'root';
    $password1 = '******';
    
    $dsn2 = 'mysql:dbname=DB2;host=localhost;charset=utf8';
    $user2 = 'root';
    $password2 = '******';
    
    try{
      $dbh1 = new PDO($dsn1, $user1, $password1);
      $dbh1 -> setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
      $dbh1 -> setAttribute(PDO::ATTR_EMULATE_PREPARES,false);
    
      $dbh2 = new PDO($dsn2, $user2, $password2);
      $dbh2 -> setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
      $dbh2 -> setAttribute(PDO::ATTR_EMULATE_PREPARES,false);
    
      $sql=
        "SELECT tb1.member_name,tb2.group_name
         FROM DB1.table1 tb1
         INNER JOIN DB2.table2 tb2 ON tb1.id = tb2.id";
      $stmt=$dbh1-> prepare($sql);
      $stmt-> execute();
    
    }catch(PDOException $Exception){
        print "エラー:".$Exception->getMessage();
    }
    
[/code]


CC BY-SA 4.0
2015-03-05T02:44:34.427
7459
2020-03-25T00:30:08.553
2020-03-25T00:30:08.553
2238
8691
question
php mysql pdo
PDOを使った異なるデータベースのテーブル結合方法


まずデータベースへの接続はひとつで構いません。接続ユーザには、両方のデータベースに対する権限を与えておきます。

その上で、以下のようなSQL文でいけると思います。

[code]

    SELECT tb1.member_name, tb2.group_name
    FROM DB1.table1 AS tb1, DB2.table2 AS tb2
    INNER JOIN tb2 ON tb1.id = tb2.id
    
[/code]


CC BY-SA 3.0
2015-04-20T07:32:10.430
9340
2015-04-20T07:32:10.430
781
7459
answer