0

これと同様の質問がありますが、うまく機能させることができません。私は2つのデータベースを持っています。db 1 にはユーザー名があります

例えば

userdb.usertable.username

db 2には、呼び出される各ユーザーの構成テーブルがあります

"their username" + _Config

特定のタイプのすべてのユーザーをループし、ユーザー名を取得してから、独自の構成テーブルから値を抽出するクエリを実行しようとしています。

これは近いものでしたが、1 人のユーザーにしか機能しませんでした。

SET @username:=(SELECT userdb.usertable.username FROM userdb.usertable WHERE version="free" );

SET @table:=concat(@username,"_Config");

SET @sql_text =concat("SELECT * FROM configdb.",@table);

PREPARE stmt FROM @sql_text;

EXECUTE stmt;

どんな助けでも大歓迎です。

4

1 に答える 1

0

最初に: このデータベース設計をすぐに削除してください。

99% の場合、1 つのアプリケーションに 2 つのデータベースは必要ありません。

先に進む前に、こちらもご覧になることをお勧めします。

次に、次のようにする必要があります。

Users_Table
id,username,(more user detail fields),config_value_1,config_value_2

ユーザーが構成パラメーターに対して複数の値を持つことができない限り、すべてのユーザー データを 1 つのテーブルに保持します。次に、このようなジャンクションテーブルが必要になります

Users_Table
id,username,other fields

Config_Value_1_Table
value_id,name

Config_Value_1_Users
user_id,value_id

これの一般的な実世界の例は次のようになります。

users
id,first_name,last_name,username,password_hash,password_salt,email,is_admin,is_banned,is_active

locations
id,location_name

user_locations
user_id,location_id

次に、非常に単純なクエリを記述して、すべてのユーザー データを取得するだけです。

于 2013-01-31T16:10:56.373 に答える