有类似的问题,但我无法让它发挥作用。我有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;
任何帮助都将不胜感激。
答案 0 :(得分:0)
首先关闭: 立即获取此数据库设计。
99%的时间您不需要为单个应用程序使用两个数据库。
在继续前进之前,您可能还需要查看this。
第二个,它应该是这样的:
Users_Table
id,username,(more user detail fields),config_value_1,config_value_2
将所有用户数据保存在一个表中,除非用户可以为config参数设置多个值。那么你需要一个像这样的联结表
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
然后您所要做的就是编写一个非常简单的查询来获取所有用户数据