我有一个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/