从参考表中选择值

时间:2016-05-03 04:49:52

标签: mysql sql select join

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

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

// STATEMENT

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

1 个答案:

答案 0 :(得分:1)

您可以加入参考表两次(或三次,或四次......)。只需给它两个不同的别名:

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

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