我有一个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
答案 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
除非我错误地解释了您的要求,否则我相信以上就是您所寻求的。