Mysql使用另一个表来翻译值

时间:2018-01-13 03:48:59

标签: mysql

用户

a = data.frame(x = c(1,2), y = 1:2)
b = data.frame(x = c(3,4), y = 1:2)

frameList = list(a = a, b = b)

lapply(1:length(names(frameList)), function(x) {

       names(frameList[[x]]) <- paste(names(frameList)[x], names(frameList[[x]]), sep = "_")

       return(frameList[[x]])

})

[[1]]
  a_x a_y
1   1   1
2   2   2

[[2]]
  b_x b_y
1   3   1
2   4   2

翻译

+-----+-------+----------+------------+
| id  |  name |  gender  |   computer |
+-----+-------+----------+------------+
| 1   |  ben  |     1    |       3    |
+-----+-------+----------+------------+

最终结果

+-----+--------+
| id  |  trans |
+-----+--------+
| 1   |   boy  |
| 2   |   girl |
| 3   |   pc   |
| 4   |   mac  |
+-----+--------+

我有2个表,一个是用户数据,另一个是翻译。

我想使用翻译表来翻译用户的性别&amp;计算机的价值观 有谁知道如何实现这个目标?

2 个答案:

答案 0 :(得分:1)

使用 JOIN

<强>查询

 select 
   t1.`id`,
   t1.`name`,
   t2.`trans` as `gender`,
   t3.`trans` as `computer`
from `user` t1
join `translate` t2
on t1.`gender` = t2.`id`
join `translate` t3
on t1.`computer` = t3.`id`;

答案 1 :(得分:1)

你提出这个问题的方式,它似乎不是一个翻译问题(在语言意义上),而是一个标准的数据库分区问题。更标准的解决方案是在各自的表中定义您的实体:

用户

+-----+--------+------------+--------------+
| id  |  name  |  genderId  |  computerId  |
+-----+--------+------------+--------------+
| 1   |  ben   |     1      |       1      |
+-----+--------+------------+--------------+

<强>性别

+-----+--------+
| id  |  name  |
+-----+--------+
| 1   |  boy   |
+-----+--------+
| 2   |  girl  |
+-----+--------+

<强>计算机

+-----+--------+
| id  |  name  |
+-----+--------+
| 1   |  pc    |
+-----+--------+
| 2   |  mac   |
+-----+--------+

...然后您的查询显示为:

SELECT * 
FROM user
INNER JOIN gender ON user.genderId = gender.id
INNER JOIN computer ON user.computerId = computer.id