我有一个users表,并具有诸如admin|manager|employee的角色,这些角色在称为reference的引用表中表示。

用户表-id|first_name|last_name|type|status

参考表-id|table|type|key|value

现在参考表包含与值匹配的整数键,因此user.type具有0-admin,1-manager,2-employee看起来像这样

table:user
type:type
key:0
value:admin


我的问题是当我必须访问需要访问引用表的表中的值时。

table:user
type:status
key:0
value:enabled


问题:如何在一条语句中访问两个引用表值?

//声明

SELECT a.id,a.first_name,a.last_name,b.value as user_type,b.value as user_status
FROM user AS a
JOIN reference as b
ON 'user'=b.table AND 'type'=b.type AND a.type = b.value AND a.status = b.value

最佳答案

您可以两次(或三次或四次...)联接到参考表。只需给它两个不同的别名即可:

SELECT a.id,a.first_name,a.last_name,b.value as user_type,b.value AS user_type, b2.value as user_status
FROM user AS a
JOIN reference AS b
ON 'user'=b.table AND 'type'=b.type AND a.type = b.value
JOIN reference AS b2
ON 'user'=b2.table AND 'status'=b2.type AND a.status = b2.value


除非我误解了您的要求,否则我相信以上就是您所追求的。

关于mysql - 从引用表中选择值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36995821/

10-10 08:09