0

コンテンツ管理ソフトウェアのデータベース テーブルに登録ユーザーとして保存されている電子メールを、各ストアのすべてのデータを保存するために作成した別のデータベースから HTML で生成されたテーブルに追加したい顧客がいます。1 人の登録ユーザーが 20 の店舗を持つことができます。そのユーザーの電子メールを CMS データベースから、別のデータベースから取得した、ユーザーが所有する登録済みストアの HTML テーブル出力に接続するにはどうすればよいですか。

次の図は、言葉で説明するのが難しいことをうまく説明しています。DB1 の「ユーザー」は、所有する各ストアの DB2 の「id」と同じです。以下を参照してください。

USER DATABASE (DB1) =====================

USER   |  EMAIL   |  NAME   |  WEBSITE
-----------------------------------------
user1  |  email1  |  name1  |  website 1
user2  |  email2  |  name2  |  website 2
user3  |  email3  |  name3  |  website 3


STORE DATABASE (DB2) ====================

ID     |  STORE    |  CITY    |  STATE
-----------------------------------------
user1  |  store1a  |  city1a  |  state1a
user1  |  store1a  |  city1a  |  state1a
user2  |  store1b  |  city1b  |  state1b
user2  |  store1b  |  city1b  |  state1b
user2  |  store1b  |  city1b  |  state1b
user3  |  store1c  |  city1c  |  state1c
user3  |  store1c  |  city1c  |  state1c

今、次のような html テーブルの結果を生成したいと考えています。

ID     |  STORE    |  CITY    |  STATE    |  EMAIL
-------------------------------------------------------
user1  |  store1a  |  city1a  |  state1a  |  email1
user1  |  store1a  |  city1a  |  state1a  |  email1
user2  |  store1b  |  city1b  |  state1b  |  email2
user2  |  store1b  |  city1b  |  state1b  |  email2
user2  |  store1b  |  city1b  |  state1b  |  email2
user3  |  store1c  |  city1c  |  state1c  |  email3
user3  |  store1c  |  city1c  |  state1c  |  email3

ご覧のとおり、DB1 からの同じユーザーの電子メールと、そのユーザーが所有するすべてのストアを表示することを期待して、DB2 にクエリを実行します。

これは顧客の要求によるもので、顧客はこの html テーブルを使用して登録に関して連絡を取ることができます。私はこれをそこに捨てると思った。顧客は、それが可能かどうか、それが役立つかどうかを尋ねているだけです。これは誰かが取り組むのが好きなもののように聞こえると思いました.内部結合を試したり、2つの別々のデータベースにクエリを実行して変数を使用しようとしたりした後、私はただ興味があります...役に立たない!

4

2 に答える 2

0

両方のデータベースが同じサーバー上にありますか? データベースのユーザー名とパスワードは同じですか?

もしそうなら、あなたはこのようなことができるはずです

SELECT * from databasename2NAME.db2 as t1
LEFT JOIN  datebasename1NAME.db1 as t2
ON t1.id=t2.USER
WHERE STATMENT HERE

databasename2NAME は db2 のデータベース名に置き換え、.db2 はそのデータベースのテーブル名に置き換える必要があります。

db1についても同じ

于 2013-01-17T21:57:35.357 に答える
0

2 つのデータベースのパスワードは異なるため、2 つの別個のクエリが必要になると思います。これが私がやろうとする方法です。処理能力は少し高いかもしれません。誰かがそれをスピードアップできるかもしれません。

$link1 = mysqli_connect($hostname1, $username1, $password1, $database1);
$query1 = "SELECT user,email FROM db1";
if ( $result1 = mysqli_query($link1, $query1, MYSQLI_STORE_RESULT) )
{
    while ( $r1 = mysqli_fetch_array($result1, MYSQLI_ASSOC) )
    {
        $array[$r1['user']] = $r1['email'];
    }

    $link2 = mysqli_connect($hostname2, $username2, $password2, $database2);
    foreach ( $array as $u=>$e )
    {
        $query2 = "SELECT * FROM db2 WHERE id='{$u}'";
        if ( $result2 = mysqli_query($link2, $query2, MYSQLI_STORE_RESULT) )
        {
            echo "<table>";
            while ( $r2 = mysqli_fetch_array($result2, MYSQLI_ASSOC) )
            {
                echo "<tr>";
                echo "<td>{$u}</td>";
                echo "<td>{$r2['store']}</td>";
                echo "<td>{$r2['city']}</td>";
                echo "<td>{$r2['state']}</td>";
                echo "<td>{$e}</td>";
                echo "</tr>";
            }
            echo "</table>";
        }
    }
    mysqli_close($link2);
}
mysqli_close($link1);
于 2013-01-17T22:06:33.617 に答える