在与人行横道表链接时加入表格

时间:2014-03-20 14:01:20

标签: sql

我正在尝试编写一个查询来识别我的一个表。为了给人们制作不同的ids,我使用了名字,年龄和性别。然而在我的主表中,数据已被收集多年,性别代码从1表示男性,2表示女性,M表示男性,F表示女性。为了在我独特的个人表格中制作这个统一的表格,我使用了一个人行横道表将性别代码转换为正确的格式,然后将其放入不同的患者表格中。

我现在正在尝试编写查询以匹配不同的患者ID以及正确的主要行。表。问题是,现在一些人的性码已经改变了。我知道我可以在主表上使用更新语句,并将所有1和2更改为m和f。但是,我想知道是否有办法匹配旧的和新的性别代码,所以我不必进行更新。我不知道是否有办法在查询中加入主要和不同的ids表,同时使用性别代码表再次转换性别代码。以下是我目前使用的示例表。

这是我想要识别的主表

----------------------------  
| Name | age | sex |  Toy  |
---------------------------- 
| Stacy| 30  | 1   | Bat   |
| Sue  | 21  | 2   | Ball  |
| Jim  | 25  | 1   | Ball  |
| Stacy| 30  | M   | Ball  |
| Sue  | 21  | F   | glove |
| Stacy| 18  | F   | glove |
----------------------------

性密码人行横道表

-------------------  
| SexOld | SexNew |  
-------------------  
|  M     |   M    | 
|  F     |   F    | 
|  1     |   M    |  
|  2     |   F    |  
-------------------

这是我以前用来为我在主表中发现不同的人填充ID的表

--------------------------  
| ID | Name | age |  sex |  
--------------------------  
|  1 | Stacy| 30  |  M   |  
|  2 | Jim  | 25  |  M   |  
|  3 | Stacy| 18  |  F   |   
|  4 | Sue  | 21  |  F   |  
--------------------------

这就是我希望我的de table表格看起来像

--------------- 
| ID  |  Toy  |
---------------
| 1   | Bat   |
| 4   | Ball  |
| 2   | Ball  |
| 1   | Ball  |
| 4   | glove |
| 3   | glove |
---------------

1 个答案:

答案 0 :(得分:0)

select c.ID, a.Toy
from maintable a
left join sexcodecrosswalk b on b.sexold = a.sex
left join peopleids c on c.Name = a.Name and c.age = a.age and c.Sex = b.sexNew

这是一个有效的演示: http://sqlfiddle.com/#!3/a2d26/1