0

私がやろうとしていることが可能かどうかはわかりませんが、可能であれば、明らかに適切にグーグル検索を行っていないため、「ばかガイド」への単なるリンクであっても、ここで得られる支援をいただければ幸いです。

わかりました、現時点では、150 個の奇数レコードのデータベース テーブルがあります。各レコードには、基本的な詳細 (名前、場所、連絡先情報など) とログイン資格情報 (ユーザー ID、パスワードなど) が含まれています。これらの詳細は、見込みユーザーが面接プロセスを成功させた後、Web サイト管理者によって取得されます (つまり、一般公開登録はありません)。レコードが作成されると、6 文字の「ユーザー名プレフィックス」がユーザーに割り当てられ (例:「UNPREF」)、これが自動インクリメンタル ユーザー ID (例: 125) と共に、ユーザー名 (例: UNPREF125) として使用されます。ウェブサイトにログインします。ただし、ユーザー名は実際にはデータベースに保存されません。代わりに、ユーザーがログインすると、ログイン スクリプトは提供されたユーザー名を分割し、2 つのチャンクが関連するフィールドに対してチェックされます。

このプライマリ ユーザー テーブルに加えて、追加情報 (学歴、職歴など) を含むその他のテーブルがいくつかあります。これらのテーブルは、プライマリ テーブルのように UserID によってユーザーにリンクされています。これで、ユーザーと管理者の両方がユーザーのデータを更新できるようになりました。そのため、レコードを最後に変更したのは誰であるか( modby)、いつ変更したか ( ) を記録するフィールドを各行に作成しました。modon最後に、理論的には、「彼が言った/彼女が言った」ナンセンスなしでその特定の個人に対処します。

ここがトリッキーな部分です。私のユーザーと管理者は別々のサーバーの別々のデータベースに保存されています (後者は私の制御範囲を超えています) が、私は最近、見事に機能する Federated Tables の利点を発見しました。ちょっと変わった点が 1 つあります。ユーザーと管理者が別々のデータベースに保存されており、単一のデータベースに保存できるレコードの数を最大化したいため (データベースごとに 100 MB のサイズ制限があります)、会社の現在の拡張率と各ブランチが必要とするためです。 2 つの管理者アカウントがある場合、ユーザーと管理者が同じ UserID になる可能性は低いシナリオではありません。したがって、modbyフィールドには完全なユーザー名が格納されます (つまり、UNPREF125 - 管理者とユーザーを区別するために、管理者は独自の一意のユーザー名プレフィックスを取得します)。

さて、おそらくそれは、私が連合テーブルの初心者であるためですが、サーバー A のテーブルのフィールド (つまり) を連合テーブルのmodby2 つの個別のフィールド (つまりunprefixおよび) と比較する方法を見つけることができないようです。useridサーバーBから呼び出されましたが、サーバーBのテーブルに追加のフィールドを作成することで回避策を考え出しましusernamemodby.確かにもっと簡単な方法がありますが、そのレッスンは別の機会に取っておきます)。

さて、ここで私の質問です。管理テーブルは現在小さい (26 レコードのみ) ため、phpMyAdmin を使用して手動でユーザー名を取得しましたが、users テーブルに 150 以上のレコードのユーザー名を手動で作成する必要は避けたいと考えています。MySQL でuseridunprefixフィールドの値を取得し、それらを結合して結果をusername同じレコードのフィールドに格納する方法はありますか、それとも PHP を使用する必要がありますか? もしそうなら、どうすればよいですか?これについて?

質問が長くなってしまい申し訳ありませんが、これが今日 Google が私の友人ではなかった理由を説明するのに役立つことを願っています.

よろしくお願いします。

4

1 に答える 1

2

組み合わせをテーブルに保存するには:

UPDATE TableB
SET username = CONCAT(unprefix, userid);

または、比較するときに使用できます。

SELECT *
FROM TableA a
JOIN TableB b
ON a.modby = CONCAT(b.unprefix, b.userid);
于 2013-06-20T02:34:38.437 に答える