我想从2个表中选择数据,第2个表由第3个表中存储的值指定。 我的表是:
所需的查询(我不知道如何实现它)必须:
予。从用户表中选择_id
等于某个ID的用户。
II。我们得到user_type
(这是int值指的是user_type.type_id)字段值(该表有type_id
和表的名称,例如[“1”=>“买家”,“2” =>“卖家”,......])
III。现在我们现在是什么是用户类型和表名,其中包含有关此用户的更多信息
IV。从表中选择(买家,卖家,管理员......)并检索整个数据(来自表用户和其他表(买家,卖家,管理员等等),具体取决于用户类型)table.user_id = users_id
我希望这个流程有意义并且感谢你(非常感谢任何建议或替代流程)
答案 0 :(得分:0)
首先从此查询中获取表名。
table name = select `type_name` from user_type inner join users on user_type.type_id = users.type_id where users.id = anyId.
然后从此表中选择数据
select * from table_name where user_id = anyId
答案 1 :(得分:0)
正如@Mak所建议的那样,我能够实现以下所需的功能:
CREATE DEFINER=`root`@`localhost` PROCEDURE `getUserData`(IN `user_id` INT)
BEGIN
DECLARE userTypeID INT;
DECLARE userTypeTableName TEXT;
SELECT user_type into userTypeID FROM users WHERE users._id = user_id LIMIT 1;
SELECT name into userTypeTableName FROM user_type WHERE user_type.type_id = userTypeID LIMIT 1;
SET @sql_text = concat('select user.*, sp_user.* from users user JOIN ',userTypeTableName,' sp_user ON user._id = sp_user.user_id WHERE user._id = ', user_id);
PREPARE stmt FROM @sql_text;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
END