修改SELECT查询

时间:2013-11-19 08:18:47

标签: sql select

我有这样的查询:

 SELECT initials, name
 FROM employee e, projects p
 WHERE e.country = p.country

到目前为止,两个表都使用了国家/地区列的缩写。例如瑞典的"SWE"和意大利的"ITA"

将来,employee表将使用country列的名称。像“瑞典”和“意大利”。

是否可以以某种方式更改我的查询,以便它可以将缩写与名称匹配?与"SWE" = "Sweden""ITA" = "Italy"一样。

感谢。

4 个答案:

答案 0 :(得分:10)

最好有一个自己的国家/地区表和其他引用该表的表。

country table
-------------
id
name
abbreviation

答案 1 :(得分:0)

我认为最好的解决方案是创建第三个表格,将当前缩写与完整的国家/地区名称相匹配。然后,您可以加入这两个表。

CountryTable (countryAbbreviation, countryName)

选择将是这样的:

SELECT initials, name
FROM employee e JOIN countryTable c ON c.countryName = c.country 
    JOIN projects p ON p.country = c.countryAbbreviation

答案 2 :(得分:0)

虽然我是juergen的解决方案,但另一种解决方案是将两个表改为新格式。

UPDATE employee
SET country = "SWEDEN"
WHERE country = "SWE"

为您拥有的所有国家/地区执行此操作。

答案 3 :(得分:0)

始终在国家/地区表格中,如果国家/地区名称以员工表格中国家/地区的前三个字母开头,那么您可以使用子字符串运算符

SELECT initials, name
FROM employee e, projects p
WHERE upper(substring(e.country,1,3)) = upper(p.country)